2
并非所有的红黑树都是平衡的?
直观地,“平衡树”应该是每个节点的左右子树必须具有“大约相同”数目的节点的树。 当然,当我们谈论红黑树*(请参阅最后的定义)时,实际上是指它们在高度上是平衡的,从某种意义上说,它们是平衡的。 假设我们尝试将上述直觉形式化如下: 定义:二叉树被称为μμ\mu -balanced,具有0≤μ≤120≤μ≤120 \le \mu \leq \frac{1}{2},如果对于每个节点,不等式NNN μ≤|NL|+1|N|+1≤1−μμ≤|NL|+1|N|+1≤1−μ \mu \le \frac{|N_L| + 1}{|N| + 1} \le 1 - \mu 对于每个,都有一个节点,上面的语句失败。是和的左子树中的节点数。是树下以为根(包括根)的节点数。μ′>μμ′>μ\mu' \gt \mu|NL||NL||N_L|NNN|N||N||N|NNN 我相信,在有关此主题的一些文献中,这些树被称为重量平衡树。 可以证明,如果具有节点的二叉树是平衡的(对于常数),那么树的高度是,因此保持了很好的搜索属性。nnnμμ\muμ>0μ>0\mu \gt 0O(logn)O(logn)\mathcal{O}(\log n) 所以问题是: 是否有一些使每个足够大的红黑树达到平衡?μ>0μ>0\mu \gt 0μμ\mu 我们使用的Red-Black树的定义(来自Cormen等人的Introduction to Algorithms): 二进制搜索树,其中每个节点的颜色为红色或黑色, 根是黑色的 所有NULL节点均为黑色 如果节点为红色,则其两个子节点均为黑色。 对于每个节点,从该节点到后代NULL节点的所有路径都具有相同数量的黑色节点。 注意:在上面的 balanced 的定义中,我们不计算NULL节点。(尽管我相信这是否重要)。μμ\mu