我正在avl树上工作,我认为香港专业教育学院的一切都正确,但是我不确定这是否是我的向右旋转功能,我做对了吗?
Node* BinaryTree::rotateRight(Node *N)
{
Node *newNode = new Node();
newNode = N->getLeft();
N->setLeft(newNode->getRight());
newNode->setRight(N);
root = newNode;
return newNode;
}
最佳答案
rotationRight不需要分配新节点。它仅通过操纵指向现有节点的指针来工作。像这样
Node* BinaryTree::rotateRight(Node *N)
{
Node *pivot = N->getLeft();
N->setLeft(pivot->getRight());
pivot->setRight(N);
return pivot;
}
因此,您几乎不用为不必要的原因分配新节点并分配给root用户。
顺便说一句,通常可以将BTW rotationRight设为静态方法。
关于c++ - AVL二进制搜索树旋转C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15780014/