0

私はavlツリーに取り組んでおり、すべてが正しいと思いますが、右回転機能が正しいかどうかわかりませんか?

Node* BinaryTree::rotateRight(Node *N)
{
    Node *newNode = new Node();
    newNode = N->getLeft();
    N->setLeft(newNode->getRight());
    newNode->setRight(N);
    root = newNode;
    return newNode;
}
4

2 に答える 2

2

rotateRight は新しいノードを割り当てる必要はありません。既存のノードへのポインターのみを操作することによって機能します。このような

Node* BinaryTree::rotateRight(Node *N)
{
    Node *pivot = N->getLeft();
    N->setLeft(pivot->getRight());
    pivot->setRight(N);
    return pivot;
}

したがって、不必要に新しいノードを割り当てたり、何らかの理由でルートに割り当てたりすることはほとんどありませんでした。

ところで、通常、rotateRight は静的メソッドにすることができます。

于 2013-04-03T07:15:21.650 に答える