Я пытаюсь реализовать дерево AVL и не уверен, как лучше всего вставить и отследить родительский узел каждого узла.Это познавательно, поэтому, пожалуйста, не предлагайте «использовать повышение»:)
Это компилируется, но я не уверен в его правильности или в том, что это лучший способ.В частности, это
insert(someNumber,root,root);
Кроме того, я буду переделывать часть высоты, когда перебалансирую и поднимаю дерево.
Я вставляю вот так
myTree.insert(someNumber);
Вотметод.Я не уверен, что мой второй параметр должен быть здесь.Я бы подумал NULL, но компилятору это не нравится (другое определение функции).
void Tree::insert(int someNumber){
insert(someNumber,root,root);
}
Вот моя вставка
void Tree::insert(int someNumber,Node*& subTreeRoot,Node*& parent){
if(subTreeRoot==NULL)
{
subTreeRoot = new Node(someNumber,parent);
if(subTreeRoot->myParent)
}
else if (someNumber<subTreeRoot->myNumber)
{
if((subTreeRoot->right==NULL)||((subTreeRoot->left!=NULL)&&(subTreeRoot->right!=NULL)))
subTreeRoot->height++;
insert(someNumber,subTreeRoot->left,subTreeRoot);
}
else
{
if((subTreeRoot->left==NULL)||((subTreeRoot->left!=NULL)&&(subTreeRoot->right!=NULL)))
subTreeRoot->height++;
insert(someNumber,subTreeRoot->right,subTreeRoot);
}
}
-