我在 C++ 中实现了一个红黑树,但是我的旋转方法有问题。插入方法工作得很好,没有任何平衡,但是一旦我尝试旋转,我的树就会丢失信息。我的猜测是我没有以正确的方式设置指向节点的指针,但我不太明白这里到底出了什么问题。
这是我的向右旋转方法:
void RedBlackTree::rotateRight(RedBlackNode *localRoot) {
cout << "rotateRight - local root " << localRoot->data << endl;
RedBlackNode *temp = localRoot->left;
localRoot->left = temp->right;
temp->right = localRoot;
localRoot = temp;
}
正在发生的事情的一个例子是我插入 c、b 和 a。树最初看起来像这样:
c
/
b
/
a
旋转后,树只会打印出根节点,c。
关于可能发生的事情的任何想法?谢谢!