红黑树插入 - 递归问题 - C++

Red-Black Tree Insert - Recursion Issue - C++

本文关键字:递归 C++ 问题 插入      更新时间:2023-10-16

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

这是我正在查看的代码片段,位于 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,使其返回实际插入的节点。插入后,您将能够轻松访问其父节点(假设该节点知道其父节点)。