Функция поворота дерева AVL теряет данные - PullRequest
0 голосов
/ 27 марта 2020

У меня есть дерево 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;
    }
  }
}
...