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

红黑树

时间:2018-06-16 18:49:58      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:tps   机构   pos   mda   bsp   执行时间   查找树   fill   二叉树   

一、红黑树的介绍

先来看下算法导论对R-B Tree的介绍:
红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。
通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其
他路径长出俩倍,因而是接近平衡的。

 

前面说了,红黑树,是一种二叉查找树,既然是二叉查找树,那么它必满足二叉查找树的一般性质。
下面,在具体介绍红黑树之前,咱们先来了解下 二叉查找树的一般性质:
1.在一棵二叉查找树上,执行查找、插入、删除等操作,的时间复杂度为O(lgn)。
    因为,一棵由n个结点,随机构造的二叉查找树的高度为lgn,所以顺理成章,一般操作的执行时间为O(lgn)。
    //至于n个结点的二叉树高度为lgn的证明,可参考算法导论 第12章 二叉查找树 第12.4节。
2.但若是一棵具有n个结点的线性链,则此些操作最坏情况运行时间为O(n)。

 

而红黑树,能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn)。

ok,我们知道,红黑树上每个结点内含五个域,color,key,left,right。如果相应的指针域没有,则设为NIL。

一般的,红黑树,满足以下性质,即只有满足以下全部性质的树,我们才称之为红黑树:

1)每个结点要么是红的,要么是黑的。
2)根结点是黑的。
3)每个叶结点,即空结点(NIL)是黑的。
4)如果一个结点是红的,那么它的俩个儿子都是黑的。
5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。

 

在这里包括楼主第一次在学习这个红黑树的时候,完全不明白第5句话什么意思,啥叫“子孙节点上的所有路径上包含相同的黑结点数”,读起来真心绕,1遍云里雾里,2遍继续,3遍晕了(此处如果有算法大神,请不要来打击小弟,小弟仅仅只是分享,帮助新学习红黑树的哥们们,少走点弯路),然后楼主根据前四条自己总结第5条规律,发现任何一条路径从根节点,到它的子女的最底端的黑结点数目都是相同的,再回过来看这个第5点就恍然大悟了!(不懂得同学请看图):

例如:1,2,3黑结点;1,2,4也是3个黑结点;1,6,7也是3个黑结点等

 

下图所示,即是一颗红黑树:

技术分享图片

 

 

红黑树

标签:tps   机构   pos   mda   bsp   执行时间   查找树   fill   二叉树   

原文地址:https://www.cnblogs.com/diegodu/p/9190924.html

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