在以前的一次考试中,我们曾被要求通过观察树的形状来判断它是否是红黑平衡的。 我没有找到任何关于如何完成这个任务的信息,除了一个网站声称,如果最长路径不超过最短路径的两倍,则二叉树就是红黑平衡的,但我非常确定这也是空路径平衡树的要求。 那是否正确? 有没有办法通过形状判断一棵树是否是红黑平衡的?
在以前的一次考试中,我们曾被要求通过观察树的形状来判断它是否是红黑平衡的。 我没有找到任何关于如何完成这个任务的信息,除了一个网站声称,如果最长路径不超过最短路径的两倍,则二叉树就是红黑平衡的,但我非常确定这也是空路径平衡树的要求。 那是否正确? 有没有办法通过形状判断一棵树是否是红黑平衡的?
我不是专家,但这是来自Cormen的书《算法导论》:
红黑树是一种满足以下红黑性质的二叉树:
- 每个节点要么是红色的,要么是黑色的。
- 根节点是黑色的。
- 每个叶子节点(NIL)都是黑色的。
- 如果一个节点是红色的,则它的两个子节点都是黑色的。
- 对于每个节点,从该节点到后代叶子节点的所有简单路径都包含相同数量的黑色节点。
接下来是这个问题:将二叉树染成红黑树的颜色
还有这个问题:如何检查节点的黑高度,以及其到后代叶子的所有路径?,其中您可以找到一个解决方案。
以这棵树为例:
如果测试中有一棵有颜色的树,则可以断言从维基百科中给出的属性。如果树没有颜色,我认为这将是情况,则将我上面链接的树写在纸上,并运行链接问题中提供的算法。