为什么这个二叉搜索树不能是红黑树?

时间:2018-11-14 21:34:19

标签: algorithm

我有一个问题要解释为什么这个平衡树不能是一棵红黑树,并且还想只用一个旋转就将其转换成一棵红黑树:

The image of the balanced tree

为什么这个二叉搜索树不能是红黑树?

3 个答案:

答案 0 :(得分:1)

在一棵红黑树中,通过叶子的每个路径都具有相同数量的黑色节点,并且该路径上至少每个第二节点都将是黑色的,因为红色节点不能有红色子节点。因此,到树上叶子的最长路径(红色节点最多的路径)最多是到叶子的最短路径的两倍。

17-> 11-> 3-> 5-> 7

拥有的节点数是

的两倍

17-> 19

所以这不能是一棵红黑的树。

如果您在树根处向右旋转,则该树将更加平衡,并可能被着色为红黑树。

答案 1 :(得分:0)

red-black trees的属性5被违反。

  

从给定节点到其后代NIL节点的每条路径都包含相同数量的黑色节点。

鉴于根是黑色的,到7末尾的钉子路径相对于19末尾的钉子路径是不平衡的。19有1个黑色节点要遍历; 7大约有3。

由于没有适当平衡,因此不能将其视为红黑树。

答案 2 :(得分:0)

正如其他人解释的那样,

17和19均为黑色,则路径17,11,3,5,7打破了黑色高度。如果每个其他节点都是红黑红等,则17(黑色),11(红色),3(黑色),5(红色),7(黑色)将具有3个黑色节点,其中路径17,19将有两个黑色节点。

但是假设7作为一个节点不存在。那么剩下的树可能是红黑树: Tree before 7 was added

并假设插入了7。然后通过一些颜色翻转和大约17的右旋转,您将得到 Tree after 7 was added