为什么这两个节点在红黑树中都不是黑色的?

时间:2013-03-23 17:18:13

标签: java data-structures collections tree red-black-tree

据我了解,在红黑树中,当我插入一个新节点时,当我遇到一个黑色节点,在我下来的路上有两个红色的孩子时,我需要翻转颜色,即让父红色它的2个孩子是黑色的(除了根)。

我在维基百科上看到了这张照片:

enter image description here

为什么不是8和17黑?

我还检查了来自Lafore的“Java中的数据结构和算法”中的applet;同样的事情,这些节点变黑了。

这个红黑树有多个版本?

1 个答案:

答案 0 :(得分:2)

实际上很可能使这些节点变黑。可能有几种不同的方法来为树的节点着色,使得得到的树服从红/黑树的结构约束。例如,任何完美的二叉树都可以被着色,使得所有节点都是黑色的,或者可以使行在红色和黑色之间交替等等。

红色/黑色树中重新着色和旋转节点的具体规则不是唯一可能的规则。他们只是碰巧正常而有效地工作的人。我们原则上可以更改它们,以便树以不同的方式着色和旋转,这可能会为具有相同节点的树形成不同的颜色或形状。

希望这有帮助!