算法——红黑树

定义

近似平衡的二叉搜索树

  二叉搜索树可能退化成链表,也就有了“平衡”搜索树,树高h=O(log(n)),保证了树高,也就保证了基本操作时间复杂度的稳定性。红黑树是一种“平衡”二叉搜索树。当然不是严格平衡,“红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡的”。

性质或者说定义

  1. 每个结点或者是红色的,或者是黑色的。
  2. 根结点是黑色的。
  3. 每个叶结点(叶结点即指树尾端NIL结点)是黑色的。
  4. 如果一个结点是红色的,那么它的两个儿子都是黑色的。
  5. 对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。

  全黑的满二叉树也是红黑树。

  黑高,从某结点x出发(不包含该结点)到达任一叶结点的简单路径上黑色结点的个数。红黑树的黑高就是其叶结点的黑高。算法导论后面有习题,黑高k的树,结点数目范围应该是[2k-1,22*k-1],(纯黑满二叉树,树高为k,得到结点数目2k-1;红、黑高度都是k的满二叉树,树高2*k,结点数目22*k-1)
  由n>=2k-1,k>=h/2,得到h<=2ln(n+1)。确定红黑树树高的级别,就确定了红黑树基本操作时间复杂度的级别,最坏情况下的时间复杂度都是O(log(n))。

代码

  红黑树插入、删除比较麻烦,参考算法导论中的伪代码即可。

参考文档

《算法导论》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值