如果在插入新元素后,RB树的根变为红色,则其颜色将变为黑色。这是为什么?在我看来,红根可以正常工作。这种颜色变化是否已经完成,以便后续操作可以更有效地完成,还是有更多的操作?
答案 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
。
这就是为什么你不能总是将根从黑色变为红色。相反,您总是可以添加到黑色高度,例如在删除或插入后旋转。