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

红黑树

时间:2017-10-10 20:35:20      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:时间   其他   3.1   线性   操作   基本概念   几何   表示   做了   

1.基本概念:

 红黑树,一种二叉查找树,但在每个节点上增加一个存储位表示节点的颜色,红色或者黑色,通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长处两倍,因而接近是平衡的。

 

2.特性:

(1)红黑树是一颗二叉查找树,执行查找,插入,删除等操作的时间复杂度为O(lgn)

(2)如果一颗具有n个节点的线性链,那么二叉查找树的最坏情况时间O(n),而红黑树能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn)。

 

红黑树的特点:

 1).每个节点要么是红的,要么是黑的。

 2).根节点时黑的。

 3).每个叶子节点,即空节点(NIL)是黑的。

 4).如果一个节点时红的,那么它的两个儿子都是黑的。

 5).对每个节点,从该节点到其子孙节点的所有路径上包含相同数目的黑节点。

技术分享

 

3.树的旋转

前景:当我们对红黑树进行插入和删除等操作时,对树做了修改,可能会违背红黑树的性质,为了保持红黑树的性质,我们可以通过对树进行旋转,即修改树种某些节点的颜色及指针结构,以达到红黑树进行插入,删除等操作,红黑树依然能保持它特有的性质。

 

3.1 左旋:

  技术分享

1).如果x的父节点是空节点,则将y设为根节点;

2).如果x是它父节点的左孩子,则将y设为“x的父节点的左孩子”;

3).如果x是它父节点的右孩子,将y设为“x的父节点的右孩子”;

将x设为y的左孩子,

将x的父节点设为y

 

3.2右旋

  技术分享

对Y进行右旋,意味着“将Y变成一个右节点”

如果“y的父亲”是一个空节点,则将X设为根节点;

如果y是它父节点的右孩子,则将x设为“y的父节点的右孩子”

如果y是它父节点的左孩子,将x设为“y的父节点的左孩子”

将y设为x的右孩子,

将y的父节点设为x

 

 

 

 

原文参考:http://www.cnblogs.com/v-July-v/archive/2010/12/29/1983707.html

       http://www.cnblogs.com/skywang12345/p/3245399.html

红黑树

标签:时间   其他   3.1   线性   操作   基本概念   几何   表示   做了   

原文地址:http://www.cnblogs.com/Wanted-Tao/p/7647263.html

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