如何判断二叉树是否为红黑平衡?

时间:2015-05-11 03:39:17

标签: binary-tree

在过去的考试中,我们曾被要求通过观察树的形状来决定树是否是红黑平衡的。我没有找到任何有关如何执行此操作的信息,除非有一个视图声称如果最长路径不超过最短路径的两倍,则二叉树是红黑平衡的,但我很确定这是null的要求路径平衡的树木。那是对的吗?有什么办法可以判断一棵树的形状是红黑平衡的吗?

2 个答案:

答案 0 :(得分:0)

我不是大师,但这是来自Cormen的书Introduction to Algorithms

  

红黑树是满足以下红黑属性的二叉树:

     
      
  1. 每个节点都是红色或黑色。
  2.   
  3. 根是黑色的。
  4.   
  5. 每片叶子(NIL)都是黑色的。
  6.   
  7. 如果节点为红色,则其子节点均为黑色。
  8.   
  9. 对于每个节点,从节点到后代叶子的所有简单路径都包含相同数量的黑色节点。
  10.   

答案 1 :(得分:0)

不要混淆。可能教授希望学生们认识到红黑树的样子。

来自维基百科,您有:

  

除了对二叉搜索树施加的要求之外,红黑树还必须满足以下要求:

     
      
  1. 节点为红色或黑色。
  2.   
  3. 根是黑色的。
  4.   
  5. 所有叶子(NIL)都是黑色。(所有叶子的颜色与根相同。)
  6.   
  7. 每个红色节点必须有两个黑色子节点(因此它   必须有黑人父母)。
  8.   
  9. 从给定节点到其任何后代NIL节点的每条路径   包含相同数量的黑色节点。
  10.         

    这些约束强制执行红黑树的关键属性: 从根到最远叶子的路径不超过从根到最近叶子的路径的两倍 即可。结果是树大致高度平衡。由于诸如插入,删除和查找值之类的操作需要与树的高度成比例的最坏情况时间,因此高度的理论上限允许红黑树在最坏的情况下是有效的,这与普通的二叉搜索树不同。

Source

然后有这个问题:Colour a binary tree to be a red-black tree

和这一个:How to check the black-height of a node for all paths to its descendent leaves?,您可以在其中找到问题的算法。

以此树为例: enter image description here

如果测试有彩色树,那么您可以断言维基百科提供的属性。如果树没有颜色,我认为会是这种情况,那么就把我上面链接的树,写下来一张纸,然后运行链接问题中提供的算法。