Algorithm 为什么这个二叉搜索树可以';不是一棵红黑相间的树吗?

Algorithm 为什么这个二叉搜索树可以';不是一棵红黑相间的树吗?,algorithm,Algorithm,我有一个问题要解释为什么这棵平衡树不能是红黑树,还想用一次旋转把它变成红黑树: 为什么这个二叉搜索树不能是红黑树?违反了属性5 从给定节点到其任何子代NIL节点的每条路径都包含相同数量的黑色节点 假设根是黑色的,那么7结尾处的零的路径相对于19结尾处的零的路径是不平衡的。19有1个黑色节点要遍历;7有大约3个 此树不能被视为红黑树,因为它没有适当的平衡。在红黑树中,通过叶子的每条路径都有相同数量的黑色节点,并且至少路径上的每一秒节点都是黑色的,因为红色节点不能有红色子节点。因此,树中叶子的最长

我有一个问题要解释为什么这棵平衡树不能是红黑树,还想用一次旋转把它变成红黑树:

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

违反了属性5

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

假设根是黑色的,那么7结尾处的零的路径相对于19结尾处的零的路径是不平衡的。19有1个黑色节点要遍历;7有大约3个


此树不能被视为红黑树,因为它没有适当的平衡。

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

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

节点数是的两倍

17->19

所以这不可能是一棵红黑相间的树


如果你在树根处向右旋转,那么这棵树将更加平衡,并且可以被着色为红黑树。

正如其他人所解释的,如果

17和19都是黑色的,然后路径17、11、3、5、7打破了黑色的高度。如果每个其他节点都是红-黑-红等,那么17(黑色)、11(红色)、3(黑色)、5(红色)、7(黑色)将有3个黑色节点,其中路径17、19将有2个黑色节点

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

假设插入了7。然后通过一些颜色翻转和大约17度的右旋转,你得到

首先感谢您的帮助,如何只使用一次旋转将其固定为红黑树?您…不能。这违背了红黑树算法的目的。你不只是旋转树,突然它变得平衡。你必须实际完成这些步骤,并确保它是平衡的。你是正确的。高度为2 log n的BST可以查看非常短的路径。例如,根的一个子元素可能是叶。在这种情况下,你不能通过着色使它成为一棵红黑树。我想不出一个简单/封闭形式的条件。不过,我可以想出一个O(nlogn)算法来检查一棵树。如果你提出一个问题,我会描述它。评论起来有点复杂。