rbtree原理及应用--前世今生及性质

9 篇文章 1 订阅

历史


      在1972年,德国的计算机科学家Rudolf Bayer发明了一种特殊的4阶的B-树结构,这种数据结构保存了所有的从根到叶结点的拥有相同结点的路径,创建出来的理想平衡树。但是,这种树并不是二叉搜索树,所以,Bayer在他的论文中称它们为“平衡二叉B-树”,后来,这种树变成了流行的2-3-4树。
      1978年,一篇《A Dichromatic Framework for Balanced Trees》论文中,Leonidas J. Guibas和Robert Sedgewick在平衡B-树的基础上衍生出了红黑树。 选择颜色中的红色,是因为他们在施乐帕克研究中心(Xerox PARC)工作期间,红色是当时的彩色激光打印机打印出来的最好看的颜色。另一种说法是,根据Guibas的表述,当时是因为他们只有红色和黑色两种笔来绘制这棵树。
      在1993年,Arne Andersson介绍了一种简化插入和删除操作的恰当地学习树的方法。
      1999年,Chris Okasaki展示了使得插入操作十足功能性的方法,它的平衡方法需要关注仅仅只有4中不平衡情况和一种默认平衡的情形。
      初始的算法需要处理8中不平衡情形,Cormen et al.后来将这个缩减到6中不平衡情形。Sedgewick表示,插入操作仅仅需要46行的Java代码就可以完成。在2008年Sedgewick结合Andersson的简化算法的思想,提出了左倾红黑树(left-1ing Red-Black Tree, LLRB)。Sedgewick最初允许结点可以拥有两个红色孩子,以便让这棵树看起来更像是2-3-4树,但是后来,这个增加的限制,让这棵新的树更像是2-3树。Sedgewick仅仅使用33行代码就实现了插入算法,大大缩短了最初的46行代码。


红黑树的性质


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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值