Реализуйте это, как если бы вы использовали целочисленный узел:
struct AVL_node
{
bool color;
int key;
AVL_Tree value;
AVL_Node * left_subtree;
AVL_Node * right_subtree;
};
В дереве вам необходимо разделить поля ключа, значения и ссылки.Ключ - это то, что вы используете для упорядочивания узлов.Значение это данные.
Значение не имеет значения.Это может быть std::vector
или std::map
или отсутствует.Узлы вообще не копируются, меняются только ссылки.Однако, если копируется узел, копируются поля ключа и значения.
Помните, что при организации узлов меняются только поля ссылок.Ключ используется для определения порядка.