码迷,mamicode.com
首页 > 其他好文 > 详细

红黑树

时间:2016-01-06 23:34:18      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

红黑树是一种自平衡二叉搜索树,每个结点都有一个额外的位(bit),代表了结点的颜色(红色或黑色)。这些代表颜色的位用来确保红黑树在插入和删除时保持基本平衡。

红黑树不保证完全平衡,但是已经足够使得搜索能在O(log n)时间内完成,n为树中元素的个数。插入和删除操作,伴随树结构的重新构造和重新着色,也能在O(log n)时间内完成。

红黑树除了满足二叉搜索树的属性之外,还需要满足以下特性:
1、一个结点要么是红色,要么是黑色
2、根结点是黑色
3、所有的叶子结点不包含数据,也就是指NIL,并且都是黑色
4、如果一个结点是红色的,那么它的子结点都是黑色
5、每一条从给定结点到其后代叶子结点(NIL)的路径都包含相同的黑色结点数量,从根结点到叶子结点(NIL)的黑色结点数量称为黑色树高(black-height)

 

技术分享



这些性质强制保证了红黑树的一个特性:从根结点到叶子结点的最长的路径不大于最短路径的两倍。这样可以保证红黑树大体上是平衡的。由于像插入,删除以及搜索在最差情形下运行时间也需要和树的高度成比例,前面的特性在理论上保证了树高的上界,进而使得红黑树在最差情形下也是高效的,而这一点是与一般的二叉搜索树不同的。

这个特性到底是如何确保的呢?是因为前面的第4条和第5条属性共同作用的结果。假设B是满足第5条属性的黑色结点个数,并且是从根结点到叶子结点的最短的路径所包括的结点个数,那么更长的路径只能通过插入红色结点来构造,然而第4条属性不允许插入超过一个连续的红色结点,因为红色结点的子结点必须是黑色结点。因此,如果忽略黑色的NIL叶子结点,则最长的路径由2×B个结点组成,其中红色结点和黑色结点交替出现,如果计算黑色的NIL叶子结点,则最长的路径由2×B-1个结点组成。

与4阶B树(B-tree of order 4)的关系

 

技术分享



红黑树与一棵4阶B树的结构相似,在4阶B树中,每一个结点可以包含1到3个值,以及2到4个孩子指针。在这样的一棵B树中,每个结点中都包含一个值与红黑树中的黑色结点的值相对应,该值前后的值是可选的(因为总共可以有3个值),共同存在于一个结点当中,前后的值与红黑树中红色结点的值相对应。

了解这种对应关系的一种方法是将红黑树中的红色结点往上移动,这样就和它们的黑色父结点在水平方向上对齐了,同时构造了一个水平方向上的簇(cluster),这样和一棵4阶B树对应起来了。其中每个簇中的最少的填充因子(也就是只有一个值)是最大填充容量(具有三个值)的三分之一。


本文摘自:https://en.wikipedia.org/wiki/Red%E2%80%93black_tree

红黑树

标签:

原文地址:http://www.cnblogs.com/lengyue365/p/5107646.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!