簡體   English   中英

紅黑樹插入-遞歸問題-C ++

[英]Red-Black Tree Insert - Recursion Issue - C++

我有一個在Red-Black Tree中實現的遞歸插入方法。 從遞歸調用返回后,我試圖查看本地根的子代是否為紅色。 但是實際上發生的是,我正在檢查樹的根,而不是子樹(最近插入的位置)。

這是我正在查看的代碼片段,它們位於insertNode方法內部:

this->insertNode(root->right, value);
if(root->right->is_red) {
    cout << "color again & " << root->data << endl;
    root->right->is_red = false;
    root->is_red = true;
    this->rotateLeft(root);
}

如何在上次插入發生的子樹的根上進行操作? 在從遞歸調用返回之前,是否需要確保已完成?

修改insertNode,使其返回實際插入的節點。 插入后,您將能夠輕松到達其父級(假設該節點知道其父級)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM