【发布时间】:2018-12-20 05:21:12
【问题描述】:
我有一个问题要求解释为什么这棵平衡树不能是红黑树,并且还想仅使用一次旋转将其转换为红黑树:
为什么这棵二叉搜索树不能是红黑树?
【问题讨论】:
标签: algorithm
我有一个问题要求解释为什么这棵平衡树不能是红黑树,并且还想仅使用一次旋转将其转换为红黑树:
为什么这棵二叉搜索树不能是红黑树?
【问题讨论】:
标签: algorithm
在红黑树中,通过叶子的每条路径都有相同数量的黑色节点,并且至少路径上的每个第二个节点都是黑色的,因为红色节点不能有红色子节点。因此,树中到叶子的最长路径(红色节点最多的那个)最多是到叶子的最短路径的两倍。
17 -> 11 -> 3 -> 5-> 7
节点数是 2 倍以上
17 -> 19
所以这不可能是一棵红黑树。
如果你在根部向右旋转,那么树会更加平衡,并且可以着色为红黑树。
【讨论】:
违反了red-black trees 的属性 5。
从给定节点到其任何后代 NIL 节点的每条路径都包含相同数量的黑色节点。
鉴于根是黑色的,7 末尾 nil 的路径相对于 19 末尾 nil 的路径是不平衡的。19 有 1 个黑色节点要遍历; 7 大约有 3 个。
这棵树不能被认为是红黑树,因为它没有得到适当的平衡。
【讨论】: