2012-12-13 54 views
2

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

这里的代码,我看该段会在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

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

+0

当然!我现在不敢问!非常感谢你! – Jordan