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

时间:2012-12-13 08:22:08

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

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

以下是我正在查看的代码片段,它位于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);
}

如何操作最后一次插入发生的子树的根?在我从递归调用回来之前,我是否需要确保完成此操作?

1 个答案:

答案 0 :(得分:1)

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