最近,我一直在浏览搜索树,遇到了红黑树,让我感到困惑的是,在rb树中,根节点应该是黑色很好,现在我将如何判断传入节点是否为红色或黑色。
我已经阅读了维基文章但尚未找到解决方案。我可能错了,但如果有人能指导我完成确切的材料,我会很高兴。
[编辑] 例如,如果我的密钥是{7,2,4,1,9,10,8}
这里7是根,它呈现黑色,但2假设是什么颜色?我们如何决定?我们如何确定其他节点所采用的颜色?
7 - (Black)
2 9
1 4 8 10
NIL NIL NIL NIL NIL NIL NIL NIL
我们是否有随机折腾将节点的颜色决定为红色或黑色。或者是其他一些过程。
谢谢。
答案 0 :(得分:1)
看看麻省理工学院开放课件上关于红黑树的讲座。
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/VideoLectures/
我发现它们非常有用。
现在,如果我没记错的话,你总是将新节点作为黑色节点插入,然后进行必要的修正(重新绘制和/或旋转)
答案 1 :(得分:0)
传入节点必须为红色,因为如果您将传入节点的颜色设置为黑色,而不是所有叶子到根路径的高度,则新插入的节点将增加1,这将违反RB树属性,即每个根到叶子路径必须包含相同数量的黑色节点。如果您想要更深入地了解RB树的插入http://www.youtube.com/watch?v=6QOKk_pcv3U