红黑树原理讲解

作者&投稿:少侦 (若有异议请与网页底部的电邮联系)
~

性质1: 每个节点要么是 黑色 ,要么是 红色 。
性质2: 根节点是 黑色
性质3: 每个叶子节点(NIL)是黑色。
性质4: 每个 红色 节点的两个子节点一定都是 黑色
性质5: 任意一个节点到每个叶子节点的路径都包含 数量相同 黑节点 。俗称: 黑高 !
从性质5又可以推出:
性质5.1: 如果一个节点存在黑子节点,那么该结点肯定有两个子节点。

插入操作包括两部分工作:

注意: 插入结点,必须为 红色 ,理由很简单,红色在父节点(如果存在)为黑色节点时,红黑树的黑色平衡没被破坏,不需要做自平衡操作。如果插入结点是黑色,那么插入位置所在的子树黑色结点总是1,必须做自平衡。

最简单的一种情景,直接把插入结点作为根结点就行
注意: 根据红黑树性质2: 根结点是黑色。还需要把插入结点设为黑色。

处理: 更新当前结点的值,为插入结点的值

由于插入的结点是红色的,当插入结点的父结点为黑色时,并不会影响红黑树的平衡,直接插入即可,无需做自平衡。

再次回想红黑树的性质2: 根结点是黑色。如果插入结点的父结点为 红结点 ,那么该父结点不可能为根结点,所以插入结点总是存在祖父结点。这一点很重要,因为后序的旋转操作肯定需要祖父结点的参与。

依据红黑树 性质4可知,红色结点不能相连===>祖父结点肯定为黑结点
因为不可以同时存在两个相连的红结点。那么此时该插入子树的红黑层数的情况是:黑红红。显然最简单的处理方式是把其改为: 红黑红
处理:
1.将P和U结点改为黑色
2.将PP改为红色
3.将PP设置为当前结点,进行后序处理

注意: 单纯从插入前来看,叔叔结点非红即空(NIL结点),否则的话破坏了红黑树性质5,此路径比其它路径多一个黑色结点。

处理:

处理:

该情景对应情景4.2,只是方向反转,直接看图

处理:

处理:




红黑树原理讲解
最简单的一种情景,直接把插入结点作为根结点就行 注意: 根据红黑树性质2: 根结点是黑色。还需要把插入结点设为黑色。处理: 更新当前结点的值,为插入结点的值 由于插入的结点是红色的,当插入结点的父结点为黑色时,并不会影响红黑树的平衡,直接插入即可,无需做自平衡。再次回想红黑树的性质2: 根...

红黑树(一)之 原理和算法详细介绍
红黑树插入操作的精妙之处在于,根据父节点颜色的不同,分为三种情况:当父节点和叔叔节点皆为红色时,通过颜色调整和祖父节点变黑来恢复平衡。 叔叔节点为黑色时,根据节点位置进行左旋或右旋,保持红黑特性。删除节点的操作同样复杂而微妙,涉及节点后继的替换、颜色调整和旋转。删除后,通过一系列颜色...

红黑树的原理
红黑树的原理是通过进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而实现关联数组,存储有序的数据。它是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,其典型的用途就是实现关联数组。红黑树拓展知识介绍 一、简单介绍 红黑树是一种特定类型的二叉树,它是在计算机科学中用来组...

红黑树原理之添加节点
(在看本文前,需要先了解平衡二叉树的原理,因为红黑树的有些操作和二叉平衡树类似)红黑树之所以被称为红黑树,是因为红黑树的节点的颜色非红即黑,通过对节点颜色的限制和一系列的限制条件来确保红黑树没有任何一条路径是其他路径的两倍长。红黑树需要满足以下条件:(1)每个节点非黑即红。(2)根...

红黑树的原理
回答首先,我们必须理解一下,在C++ 中容器被定义为在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“;再次回想红黑树的性质2 根结点是黑色如果插入结点的父结点为 红结点 ,那么该父...

红黑树的原理和应用场景
红黑树(Red Black Tree)是一种平衡的排序二叉树,如图:所有的红黑树都满足如下性质:每个节点要么是红色,要么是黑色的;根节点和叶子节点(即 NIL 空节点)一定是黑色;红色节点的父节点,或者子节点一定为黑色;对每个节点,从该节点到叶子节点的所有路径上,包含的黑节点数目相同。根据性质4,我们...

红黑树的原理
红黑树的原理为:红黑树是一种特定类型的二叉树,它是在计算机科学中用来组织数据比如数字的块的一种结构。所有数据块都存储在节点中。这些节点中的某一个节点总是担当起始位置的功能,称之为根节点或根。红黑树是一种自平衡二叉查找树,是计算机科学领域中的一种数据结构,典型的用途是实现关联数组,...

什么是红黑树?
今天,我们将拨开迷雾,揭示红黑树的本质原理与操作技巧,带你走进这个高效平衡的奇幻世界。首先,我们来聊聊红黑树的基本概念。它是二叉查找树的一种增强版本,通过巧妙地维护五个关键性质——节点的红黑着色、根节点黑色、叶节点黑色、红色子节点必为黑色,以及任何一条从根到叶子的简单路径上,黑色节点...

【老实李】JDK1.8中HashMap的红黑树
红黑树其实就是一种 自平衡 的二叉查找树。他这个自平衡的特性就是对HashMap中链表可能会很长做出的优化。红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:性质1. 节点是红色或黑色。性质2. 根节点是黑色。

黑树百两茶能减肥吗
其中黑茶中水溶性成分进行研究的过程中,发现黑茶具有良好的减肥功效,同时在调理肠胃、保护肝脏等方面具有较好的保健功效等等。下面是健康物理减肥原理 1疏通经络,2.调节脏腑平衡,3.健康平衡的脏腑将多余的痰湿代谢出体外,清除脂肪,减轻体重 了解更多让她告诉你 ...

芒康县13137762269: 什么是红黑树 -
殷费阿赛: 红黑树是特殊的AVL树,遵循红定理和黑定理 红定理:不能有两个相连的红节点 黑定理:根节点必须是黑节点,而且所有节点通向NULL的路径上,所经过的黑节点的个数必须相等

芒康县13137762269: 红黑树的简介 -
殷费阿赛: 红黑树是一种很有意思的平衡检索树.它的统计性能要好于平衡二叉树(有些书籍根 红黑树 据作者姓名,Adelson-Velskii和Landis,将其称为AVL-树),因此,红黑树在很多地方都有应用.在C++ STL中,很多部分(目前包括set, multiset, map...

芒康县13137762269: 请问java中HashMap是怎么实现的,还有treeMap的实现原理是红黑树,请解释一下红黑树 -
殷费阿赛: 参考资料的网页上有比较的代码,你可以仔细看下~~~ java中HashMap,LinkedHashMap,TreeMap,HashTable的区别 java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap...

芒康县13137762269: 红黑树在linux内核什么地方 -
殷费阿赛: 红黑树是平衡二叉树的一种,它有很好的性质,树中的结点都是有序的,而且因为它本身就是平衡的,所以查找也不会出现非常恶劣的情况,基于二叉树的操作的时间复杂度是O(log(N)).Linux内核在管理vm_area_struct时就是采用了红黑树来维...

芒康县13137762269: 红黑树是怎么回事?百度的解释,我看不懂.谁能给解释一下红黑树的设计思想和这种思想诞生的原因,对应的 -
殷费阿赛: http://blog.163.com/scn_2001_ren/blog/static/69845881200872410163654/

芒康县13137762269: 为什么工程中都用红黑树,而不是其他平衡二叉树 -
殷费阿赛: 红黑树和平衡二叉树区别如下:1、红黑树放弃了追求完全平衡,追求大致平衡,在与平衡二叉树的时间复杂度相差不大的情况下,保证每次插入最多只需要三次旋转就能达到平衡,实现起来也更为简单.2、平衡二叉树追求绝对平衡,条件比较...

芒康县13137762269: 红黑树与普通的平衡二叉树除了颜色到底有什么区别 -
殷费阿赛: 红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能.自从红黑树出来后,AVL树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能. 红黑树和AVL树的区别在于它使用颜色来标识结点的高度,它所追求的是局部平衡而不是AVL树中的非常严格的平衡.AVL树的复杂比起红黑树来说简直是小巫见大巫.红黑树是真正的变态级数据结构.

芒康县13137762269: 红黑树的用途 -
殷费阿赛: 红黑树用在关联数组、字典的实现上.需要的空间比散列表小. 任何键值对应,需要随机存储和键有序的情况都可以用.一. 基本概念 1.红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用...

芒康县13137762269: 数据结构的红黑树性质的一个问题 -
殷费阿赛: 好乱.红黑树只有三个性质.1:根节点和所有外部节点是黑色.2:根至外部节点中没有两个连续的颜色是黑色3:所有根节点至外部节点的路径上都有相同数目的黑色节点.注1:外部节点就是叶节点指向的NULL节点,只不过这里不再指向NULL,而是一个实质性的空节点.注2:红黑树还有另一种规则(路径指针),但是和上面的是一样的意思,所以不列举了.

芒康县13137762269: 红黑树的各种操作的时间复杂度是多少 -
殷费阿赛: 红黑树的操作时间跟二叉查找树的时间复杂度是一样的,执行查找、插入、删除等操作的时间复杂度为O(logn)....

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网