在过去的考试中,我们曾被要求通过观察树的形状来决定树是否是红黑平衡的。我没有找到任何有关如何执行此操作的信息,除非有一个视图声称如果最长路径不超过最短路径的两倍,则二叉树是红黑平衡的,但我很确定这是null的要求路径平衡的树木。那是对的吗?有什么办法可以判断一棵树的形状是红黑平衡的吗?
答案 0 :(得分:0)
我不是大师,但这是来自Cormen的书Introduction to Algorithms
:
红黑树是满足以下红黑属性的二叉树:
- 每个节点都是红色或黑色。
- 根是黑色的。
- 每片叶子(NIL)都是黑色的。
- 如果节点为红色,则其子节点均为黑色。
- 对于每个节点,从节点到后代叶子的所有简单路径都包含相同数量的黑色节点。
醇>
答案 1 :(得分:0)
不要混淆。可能教授希望学生们认识到红黑树的样子。
来自维基百科,您有:
除了对二叉搜索树施加的要求之外,红黑树还必须满足以下要求:
- 节点为红色或黑色。
- 根是黑色的。
- 所有叶子(NIL)都是黑色。(所有叶子的颜色与根相同。)
- 每个红色节点必须有两个黑色子节点(因此它 必须有黑人父母)。
- 从给定节点到其任何后代NIL节点的每条路径 包含相同数量的黑色节点。
醇>这些约束强制执行红黑树的关键属性: 从根到最远叶子的路径不超过从根到最近叶子的路径的两倍 即可。结果是树大致高度平衡。由于诸如插入,删除和查找值之类的操作需要与树的高度成比例的最坏情况时间,因此高度的理论上限允许红黑树在最坏的情况下是有效的,这与普通的二叉搜索树不同。
然后有这个问题: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?,您可以在其中找到问题的算法。
以此树为例:
如果测试有彩色树,那么您可以断言维基百科提供的属性。如果树没有颜色,我认为会是这种情况,那么就把我上面链接的树,写下来一张纸,然后运行链接问题中提供的算法。