rbtree原理及应用--前世今生及性质
来源:互联网 发布:高性能网络编程1 编辑:程序博客网 时间:2024/06/05 11:50
历史
在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行代码。
红黑树的性质
2)根结点是黑色的;
3)每个叶结点(NIL)是黑色的;
4)如果一个结点是红色的,则它的两个子结点都是黑色的;
5)对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。
- rbtree原理及应用--前世今生及性质
- rbtree原理及应用--使用
- rbtree原理及应用--插入
- 微波的定义、性质及应用原理
- Threejs 的前世今生及基本概念
- ORACLE ERP 的前世今生摘记及原文
- 不确定性原理的前世今生
- 模运算性质及应用
- 有理数的性质及应用
- Gram 矩阵性质及应用
- 红黑树rbtree原理及linux内核中红黑树实现详解
- 不确定性原理的前世今生:傅里叶变换
- Appium的前世今生、工作原理等
- stirling数的性质及应用
- 卡特兰数 性质及应用
- XOR 异或的性质及应用
- 卷积及卷积的性质与应用
- 二阶等差数列的性质及应用
- load-on-startup的作用
- 虚幻4中的动画技术【1】资源准备和概念初探
- Java集合---HashMap源码剖析
- Ecilpse上运行SVN报找不到SVNConnector最有效解决方法
- 经典java题
- rbtree原理及应用--前世今生及性质
- webupload文件上传过程中遇到的一个问题
- linux IPC---共享内存
- Java集合---HashSet的源码分析
- 使用Eclipse从SVN检出Maven项目
- Android多点触控实现图片缩放预览
- socket网络协议
- BZOJ2243
- Java集合---ConcurrentHashMap原理