У меня есть дерево AVL, и я думаю, что моя функция вращения где-то теряет детей и отключается. Я не могу найти где. Любая помощь велика.
void AVL::rotation(Node* rotatedNode, int direction) {
cout << "rotation ";
Node* temp;
if(rotatedNode == nullptr) {
return;
}
//rotation right
if(direction == 1) {
cout << "right" << endl;
if(rotatedNode->leftChild == nullptr){
return;
}
rotatedNode->leftChild->parent = rotatedNode->parent;
temp = rotatedNode->leftChild->rightChild;
rotatedNode->leftChild->rightChild = rotatedNode;
rotatedNode->parent = rotatedNode->leftChild;
rotatedNode->leftChild = temp;
if(rotatedNode == root) {
root = rotatedNode->parent;
}
}
//rotation left
else {
cout << "left" << endl;
if(rotatedNode->rightChild == nullptr){
return;
}
rotatedNode->rightChild->parent = rotatedNode->parent;
temp = rotatedNode->rightChild->leftChild;
rotatedNode->rightChild->leftChild = rotatedNode;
rotatedNode->parent = rotatedNode->rightChild;
rotatedNode->rightChild = temp;
if(rotatedNode == root) {
root = rotatedNode->parent;
}
}
}