平衡树、AVL树、伸展树、B树、红黑树

平衡树、AVL树:https://www.cnblogs.com/Benjious/p/10336145.html

伸展树:https://www.cnblogs.com/Benjious/p/10346084.html

B树:https://www.cnblogs.com/Benjious/p/10353733.html

红黑树:https://www.cnblogs.com/Benjious/p/10389338.html

红黑树为什么能达到半平衡(最深的叶子节点的深度不会大于两倍的最短叶子节点的深度)?
因为红色节点不能与红色节点相连,且所有路径的黑色节点个数相同,因此最长路径是红黑交替节点路径,所以最短路径必然是只包含黑色节点的路径,于是从根节点到叶子节点的的最长路径不会超过最短路径的两倍。

红黑树相比AVL的优点:

  1. 如果插入一个node引起了树的不平衡,AVL和RB-Tree都是最多只需要2次旋转操作,即两者都是O(1);但是在删除node引起树的不平衡时,最坏情况下,AVL需要维护从被删node到root这条路径上所有node的平衡性,因此需要旋转的量级O(logN),而RB-Tree最多只需3次旋转,只需要O(1)的复杂度。

  2. 其次,AVL的结构相较RB-Tree来说更为平衡,在插入和删除node更容易引起Tree的unbalance,因此在大量数据需要插入或者删除时,AVL需要rebalance的频率会更高。因此,RB-Tree在需要大量插入和删除node的场景下,效率更高。自然,由于AVL高度平衡,因此AVL的search效率更高。

  3. map的实现只是折衷了两者在search、insert以及delete下的效率。总体来说,RB-tree的统计性能是高于AVL的。

作者:Acjx
链接:http://www.zhihu.com/question/20545708/answer/58717264

红黑树删除:
删除操作
若X左右子节点都非空,则将X数据与其后继或前驱交换(颜色不换),实际被删除的是X的前驱或后继,所以k必为NULL。
等效为:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值