如何知道一棵树是否可着色

时间:2018-07-03 21:20:10

标签: tree binary-tree binary-search-tree red-black-tree

我不明白为什么下面的RB树无法着色。 RBtree

我认为唯一的要求是:

  

从根到最近的叶子的路径的长度不超过从根到最近的叶子的路径的两倍。

但是在图像中,您可以看到最短路径(橙色)为2,最长路径(蓝色)为4,这意味着它应可根据上述规则着色。

2 个答案:

答案 0 :(得分:1)

实际上,它是可着色的。一棵红色的黑树必须始终遵循以下规则:

  • 每个节点的颜色均为红色或黑色。

  • 树的根始终是黑色的。

  • 没有两个相邻的红色节点(红色节点不能有红色父节点或红色子节点)。

  • 从根到NULL节点的每个路径都具有相同数量的黑色节点。

无法对树着色,因为2-blue和3-blue都应为红色,这违反了3条规则。

  

从根到最远的叶子的路径不超过两倍   只要是从根到最近的叶子的路径。

这不是完全必要,而是RB树的通用属性。跳过数学证明,考虑一棵树,其中一个分支上只有黑色节点,而另一分支上红色和黑色节点交替。在这种情况下,如果不是这样,则至少会违反以上规则之一。

理论上,RB树中有两种高度:

  • 黑色高度,这是树中所有分支所共有的(否则违反了4条规则)
  • “总高度” (不是现有术语),它是从根到NIL的一条路径上红色节点+黑色节点的最大数量。

答案 1 :(得分:0)

我认为您不必计算NIL。这样,最短路径是1,最长路径是3,这意味着您引用的规则适用,因为从根到最近的叶子的路径的两倍是1 * 2和3(实际最长路径)更大=>否可着色的。