算法导论-红黑树基本概念

刚刚接触到红黑树的时候,感觉很奇怪,二叉树已经很好用了,为什么要发明红黑树??看到算法导论的目录才明白,二叉树在执行查找,删除操作的时候,时间复杂度为O(h),这时间复杂度与二叉树的高度有关,如果二叉树高度较小,自然很方便,但是如果遇到树的高度较高时(所有的数据都在一根树枝上),二叉树和链表就差别不大了。所以发明了红黑树,红黑树是一种平衡搜索树,红黑树的高度最多为2lg(n+1),时间复杂度为O(h'),h'<2lg(n+1),所以红黑树相对于二叉树而言性能更好。

首先说明红黑树的五大性质:

1.每个节点不是黑色就是红色,非黑即红。

2.根节点一定是黑色。

3.每个叶节点一定是黑色。

4.每个红色节点的两个子节点为黑色。

5.对于每个节点,该节点到所有后代叶节点的路径上黑色节点的数目相同。

然后定义:红黑树的节点的黑高指得是节点x某支路上黑色节点的数目(不包括节点x,但是包括叶节点(NIL))。

引理:一棵具有n个节点的红黑树,其树高至多为2lg(n+1)

证明:

方法1(数学归纳法):

首先我们要证明节点x的红黑树具有2^bh(x)-1个内部节点(bh(x)表示节点x的黑高)

1.当具有节点x的红黑树的树高为0时,黑高也为0,则内部节点为0,符合上述公式。

2.假设当节点x的红黑树高度不为0时,不妨设黑高为bh(x),则其子节点的黑高为bh(x)或bh(x)-1,假设其子节点满足上述式子,则有

其子节点至少有2^(bh(x)-1)-1个内部节点,则节点x的内部节点可得2^(bh(x)-1)-1+2^(bh(x)-1)-1+1=2^bh(x)-1,结果与上述结论相同,故命题得证。

由红黑树的性质4可知,黑色节点一定比红色节点多,则树高h<=2bh(x),则有n>2^(h/2)-1,化简可得h<=2lg(n+1)。

方法2:

                                                     

假设红黑树如上图所示,现将红色节点与其黑色的父节点合并,合并后的红黑树图如下图所示:

                                                

这是一颗2-3-4树,这棵树的高度等于黑高bh(x),每个节点最少包含两个最多包含四个节点,则该树内部节点数目2^(bh(x))-1<n<4^(bh(x))-1,得到了证明一同样的结论,同理可知h<2bh(x),同上可知h<2lg.(n+1)。








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值