我正在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/

10-13 06:51