【问题标题】:Red-Black Tree Insert - Recursion Issue - C++红黑树插入 - 递归问题 - C++
【发布时间】:2012-12-01 02:22:45
【问题描述】:

我有一个在红黑树中实现的递归插入方法。从递归调用返回后,我试图查看本地根的孩子是否是红色的。但实际发生的是,我正在检查树的根,而不是子树(最近插入发生的地方)。

这是我正在查看的代码的 sn-p,它位于 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);
}

如何对最后插入发生的子树的根进行操作?在我从递归调用返回之前,是否需要确保这已完成?

【问题讨论】:

    标签: c++ data-structures recursion insert red-black-tree


    【解决方案1】:

    修改insertNode,使其返回实际插入的节点。插入后您将能够轻松到达其父节点(假设该节点知道其父节点)。

    【讨论】:

    • 当然!我现在问的感觉很愚蠢!非常感谢!
    猜你喜欢
    • 2013-06-12
    • 2011-08-06
    • 2018-11-06
    • 2013-11-17
    • 2011-01-19
    • 2011-08-03
    • 2013-05-02
    • 2021-06-27
    相关资源
    最近更新 更多