红/黑树的孩子?

时间:2013-03-28 12:12:22

标签: algorithm red-black-tree

根据此红色黑树explanation,树必须具有以下属性:

  1. 节点为红色或黑色。
  2. 根是黑色的。 (有时会省略此规则。由于根始终可以从红色变为黑色,但不一定 反之亦然,这条规则对分析影响不大。)
  3. 所有叶子(NIL)都是黑色的。 (所有叶子的颜色与根相同。)
  4. 每个红色节点的两个孩子都是黑色的。
  5. 从给定节点到其任何后代叶子的每个简单路径都包含相同数量的黑色节点。
  6. 什么阻止某人使每个节点变黑?

2 个答案:

答案 0 :(得分:1)

您引用的最后一条规则是“从给定节点到其任何后代叶子的每条简单路径都包含相同数量的黑色节点。”

如果所有节点都是黑色,则从根到任何叶子的路径必须包含相同数量的节点。换句话说,所有叶子都在相同的深度 - 所以这只适用于perfect binary tree

答案 1 :(得分:1)

有可能。但是为了维持条件5,有时您可能想要为节点着色RED。

例如,请考虑以下示例。

  a
 / \
b   c

这里所有节点都可以是BLACK

现在,如果要插入新节点,您会选择哪种颜色?红色。因为如果选择黑色,则不满足条件5。所以基本上你可以继续插入RED节点,除非任何条件(1-4)没有被破坏