据我了解,在红黑树中,当我插入一个新节点时,当我遇到一个黑色节点,在我下来的路上有两个红色的孩子时,我需要翻转颜色,即让父红色它的2个孩子是黑色的(除了根)。
我在维基百科上看到了这张照片:
为什么不是8和17黑?
我还检查了来自Lafore的“Java中的数据结构和算法”中的applet;同样的事情,这些节点变黑了。
这个红黑树有多个版本?
答案 0 :(得分:2)
实际上很可能使这些节点变黑。可能有几种不同的方法来为树的节点着色,使得得到的树服从红/黑树的结构约束。例如,任何完美的二叉树都可以被着色,使得所有节点都是黑色的,或者可以使行在红色和黑色之间交替等等。
红色/黑色树中重新着色和旋转节点的具体规则不是唯一可能的规则。他们只是碰巧正常而有效地工作的人。我们原则上可以更改它们,以便树以不同的方式着色和旋转,这可能会为具有相同节点的树形成不同的颜色或形状。
希望这有帮助!