红黑树高度上限2log(n+1)的通俗理解

写在前面:

        红黑树有如下性质:有n个内部节点的红黑树,其高度h≤2log(n+1)。

        该性质非常优秀,由该性质我们可以知道,对于n个节点的红黑树来说,对其查找的时间复杂度可以控制在O(log n)量级。

        在算法导论上,包括部分数据结构教材上,对于该性质的数学证明略显抽象,这里给出朕关于该性质的一些通俗形象的例子,帮助诸位爱卿更好地理解该性质以及数学证明过程。


红黑树高度上限2log(n+1)的通俗理解:

有n个内部节点的红黑树,其高度h≤2log(n+1)

        该性质说,对于一个有n个内部节点的红黑树来说,其最大高度h_max≤2log(n+1)。

        那么,对于一个有n个内部节点的红黑树,在什么情况下,其高度会最高呢?不好理解?

        没关系,我们先简化一下问题,如果是问:对于一个有n个内部节点的(一般的树,非红黑树),其最大高度是多少,很显然,最大高度是n,也就是长长的一条树,如下图:

        从上述简单的例子,我们可以得到一些启发,对于一颗红黑树,当它的内部节点数已知为n的情况下,要让树的最大高度h_max尽可能的大,必须把尽可能多的节点安排在一根枝桠上,就像上图所示的情况。

        那么我们能不能和上面例子一样,把所有n个节点全部放在一个枝桠上呢?很显然,不行。因为红黑树具有一条重要的性质:红黑树有一个确定的黑高,也就是从任一节点到叶节点的简单路径上,所含的黑节点数量相同。如果把所有n个节点全部放在一个枝桠上,不妨设除根节点外全部是左孩子,那么根节点的黑高从左走为n,而从右走为1,显然违背了该性质(注意!红黑树是二叉排序树)                                              

        由此可知,要找到最大高度h_max,就是要有一根“长长的枝桠”的同时,还需要维持红黑树的性质。

        设树的高度为h,要找到n个节点的红黑树的最大高度h_max,等价于红黑树高为h时找到最少节点数n_min(这两种说法表述同一种状态)。此时树的黑高bh≥h/2(红黑树性质),这里不加证明的给出下图,在该图情况下,红黑树具有最少节点数。                                             

        在上图中,红黑树的黑高取最小值h/2,此时为了维持红黑树性质,又为了使得红黑树的节点数尽可能的少,因此出了“长长的枝桠外”,其他部分为全部黑节点的“满二叉树”。

        当h充分大时,“长长的枝桠”相对于其余部分来说可以忽略,此时红黑树的最小节点数为上图红框部分,即n_{min}=2^{\frac{h}{2}}-1,反解有h=2\log (n+1)

        则对于n个节点的红黑树来说,其高度上限为2\log (n+1)


写在后面:

各位爱卿若有疑问,欢迎上奏与朕探讨。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值