为什么RB树的根是黑色的?

时间:2015-02-01 20:08:30

标签: data-structures tree complexity-theory binary-search-tree red-black-tree

如果在插入新元素后,RB树的根变为红色,则其颜色将变为黑色。这是为什么?在我看来,红根可以正常工作。这种颜色变化是否已经完成,以便后续操作可以更有效地完成,还是有更多的操作?

1 个答案:

答案 0 :(得分:0)

一种可能的解释来自树的高度。高度为Theta(log n)

由于RB-Trees是BT,因此至少在Omega(log n)中是非常清楚的。然后O(log n)开始播放。

由于红色节点不能有红色父节点,因此高度不超过一个外部节点的最大黑色深度(BD)的两倍(所有外部节点具有相同的BD)。因此<= log n(在场内)。

现在想象一下只有一个节点的树 - 根。如果它是黑色的,那么我们有1个BD的所有外部节点=&gt;小于或等于2的高度,这没关系。

但是如果根是红色的,那么外部节点的深度必须小于2 * 0,实际上它实际上是1.矛盾,因为1 < 0

这就是为什么你不能总是将根从黑色变为红色。相反,您总是可以添加到黑色高度,例如在删除或插入后旋转。