2

据我了解,在红黑树中,当我插入一个新节点时,当我遇到一个带有 2 个红色子节点的黑色节点时,我需要翻转颜色,即使父节点变为红色,并将其 2孩子黑色(从根除外)。

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

在此处输入图像描述

为什么8和17不是黑色的?

我还签入了一个来自Lafore的“Java 中的数据结构和算法”的小程序;同样的事情,这些节点变成黑色。

这棵红黑树有多个版本吗?

4

1 回答 1

2

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

在红/黑树中重新着色和旋转节点的特定规则并不是唯一可能的规则。它们只是碰巧正确有效地工作的那些。我们原则上可以更改它们,以便树以不同的方式着色和旋转,这可能会为具有相同节点的树产生不同的颜色或形状。

希望这可以帮助!

于 2013-03-23T17:57:30.183 回答