我正在C++中實現紅黑樹,但我遇到了旋轉方法的麻煩。插入方法工作得很好,沒有任何平衡,但只要我嘗試旋轉,我的樹就會丟失信息。我的猜測是我沒有以正確的方式設置節點的指針,但我不完全明白這裏出了什麼問題。紅黑樹 - 旋轉方法實現 - 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,和。樹最初看起來像這樣:
c
/
b
/
a
旋轉後,樹只會打印出根節點c。
關於可能會發生什麼的任何想法?謝謝!
我會懷疑使用調試器可能會告訴你發生了什麼...... – Caribou
你需要通過引用傳遞'localRoot'指針,而不是通過值...最後一行沒有任何作用! –
@Caribou我知道visual studio有一個運行時錯誤調試器。不幸的是,我無法使用視覺。知道具體哪些會有所幫助?我只是使用文本編輯器和命令行。 – Jordan