精华内容
下载资源
问答
  • 红黑树规则
    2021-06-07 20:41:16

    1.每个节点的颜色不是黑色就是红色
    2.根节点是黑色
    3.每个叶子节点(NIL)是黑色
    4.如果一个节点是红色,那么它的两个子节点都是黑色
    5.从任一节点到其每个叶子的所有简单路径,都包含相同数目的黑色节点

    更多相关内容
  • 红黑树规则

    2022-06-30 21:19:30
    红黑树具体规则如下:节点分为红色或者黑色。根节点必为黑色。叶子节点都为黑色,且为 null。连接红色节点的两个子节点都为黑色(红黑树不会出现相邻的红色节点)。从任意节点出发,到其每个叶子节点的路径中包含...

    红黑树具体规则如下:

    节点分为红色或者黑色。

    根节点必为黑色。

    叶子节点都为黑色,且为 null。

    连接红色节点的两个子节点都为黑色(红黑树不会出现相邻的红色节点)。

    从任意节点出发,到其每个叶子节点的路径中包含相同数量的黑色节点。

    新加入到红黑树的节点为红色节点。

    红黑树也是均衡二叉树,非严格均衡的二叉搜索树

    展开全文
  • 红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构。1972年出现,当时被称之为平衡二叉B树。后来,1978年被修改为如今的"红黑树"。...红黑树不是高度平衡的,它的平衡是通过"红黑规则"进行实现的。...

    红黑树

    简介

    红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构。

    1972年出现,当时被称之为平衡二叉B树。后来,1978年被修改为如今的"红黑树"。
    它是一种特殊的二叉查找树,红黑树的每一个节点上都有存储位表示节点的颜色,
    每一个节点可以是红或者黑;红黑树不是高度平衡的,它的平衡是通过"红黑规则"进行实现的。

    红黑树的特点:

    • 首先它是一个平衡二叉B树
    • 每一个节点可以是红或者黑
    • 红黑树不是高度平衡的,它的平衡是通过"自己的红黑规则"进行实现的

    那么他的红黑规则是怎样的呢?下面我们通过举例一步步进入红黑树的世界:

    红黑规则

    红黑树的红黑规则如下:

    1. 每一个节点或是红色的,或者是黑色的
    2. 根节点必须是黑色
    3. 如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点(Nil)是黑色的
    4. 如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连 的情况)
    5. 对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点

    例如下图就是一个典型的红黑树:
    在这里插入图片描述

    添加规则

    首先红黑树添加节点的默认颜色!因为添加节点时,默认为红色,效率高

    但是直接添加后就可能会破坏上述红黑树自己的规则

    那么红黑树添加节点后如何保持红黑规则呢?

    保持红黑规则

    • 根节点位置
      • 直接变为黑色
    • 非根节点位置
      • 父节点为黑色
        • 不需要任何操作,默认红色即可
      • 父节点为红色
        • 叔叔节点为红色
          1. 将"父节点"设为黑色,将"叔叔节点"设为黑色
          2. 将"祖父节点"设为红色
          3. 如果"祖父节点"为根节点,则将根节点再次变成黑色
        • 叔叔节点为黑色
          1. 将"父节点"设为黑色
          2. 将"祖父节点"设为红色
          3. 以"祖父节点"为支点进行旋转

    整理成结构图如下:
    在这里插入图片描述

    很复杂吧,看不懂没关系,下面我们来具体举例带入一下这些规则对应的四种情况:

    红黑树添加节点图文案例

    第一种情况:根节点位置

    在这里插入图片描述
    根据根节点必须是黑色,所以插入的红的要变成黑色

    例如:首先没有节点,插入了一个红色节点20,
    在这里插入图片描述
    这个节点是根节点,所以就直接就变成
    在这里插入图片描述

    第二种情况:非根节点位置→父结点为黑色

    在这里插入图片描述
    如果插入的是非根节点位置,如果父结点的黑色,那么插入一个红色节点不需要任何操作,因为红节点不影响上述五个规则

    例如:再来一个18红节点和23红节点,父结点是黑的,那么确实不需要任何操作
    在这里插入图片描述

    第三种情况:非根节点位置→父结点为红色→叔叔节点为红色

    在这里插入图片描述
    如果插入的是非根节点位置,如果父结点的红色的话,就得分两种情况,这里得看一下他的叔叔节点,如果它的叔叔是红色,需要按照上面三步进行操作:

    例如:再插入一个22红节点,他应该在23节点的左侧,这样就有问题了,规则里说两个红色节点不能相邻
    在这里插入图片描述
    那么我们就需要按照上面的三步就行操作:

    1. 将“父节点”设为黑色,将“叔叔节点”设为黑色
    2. 将“祖父节点”设为“红色”
    3. 如果祖父节点为根节点,则将根节点再次变成黑色

    修改上面的案例,先将22设置为黑色,叔叔节点18也设置为黑色
    在这里插入图片描述
    再将他的祖父节点也就是20根节点设置为红色,但是第三条说的是根节点如果是父结点就不用改了,那么不改,最后效果如上图所示。

    第四种情况:非根节点位置→父结点为红色→叔叔节点为黑色

    在这里插入图片描述
    如果插入的是非根节点位置,如果父结点的红色的话,叔叔是黑色的话,需要按照上面三步进行操作:

    例如现在红黑树是这样的:
    在这里插入图片描述
    再插入一个14红节点,应该是放在15的左边
    在这里插入图片描述

    但是这样又违背了两红不能相连的规则,此时他的叔叔节点是黑色的Nil节点,这是就需要这三步操作进行修改:

    1. 将“父节点”设为“黑色”
    2. 将“祖父节点”设为“红色”
    3. 以祖父节点为支点进行旋转

    首先对父结点与祖父节点进行设置,但是现在16与18就不满足两红不能相连的情况了,此时要进行第三个规则: 以祖父节点为支点进行旋转,这里也就是以16红节点为支点进行右旋转

    在这里插入图片描述
    最后旋转后的结果是这样的
    在这里插入图片描述

    展开全文
  • 红黑树规则及证明

    2020-11-21 08:37:18
    4条规则 1. 节点颜色非黑即红 2. 根节点为黑 ...然后根据性质3证明,一个黑高为H的红黑树,其真实高度 最多为2H。于是,于是有对于N个节点的树,其黑高最多为log(2,N),其高度最多为2log(2,N) ...

    4条规则

    1.  节点颜色非黑即红
    2.  根节点为黑
    3.  父子节点不能都为红
    4.  根节点到所有空节点的黑节点个数相同
    

    证明

    首先递归证明,黑高为H的树至少有2^H-1个节点。于是有对于N个节点的树,其
    黑高最多为log(2,N)。然后根据性质3证明,一个黑高为H的红黑树,其真实高度
    最多为2H。于是,于是有对于N个节点的树,其黑高最多为log(2,N),其高度最多为2log(2,N)
    
    展开全文
  • 一、红黑树规则 二、红黑树的相对平衡 三、红黑树的变换 1.变色 2.旋转 (1).左旋转 (2).右旋转 四、红黑树的插入操作 1.情况一 2.情况二 3.情况三 4.情况四 5.情况五 一、红黑树规则 ...
  • 红黑树红黑规则

    千次阅读 2019-03-20 15:58:13
    1. 每一个节点不是红色的就是黑色的。 2. 根节点总是黑色的。 3. 如果节点是红色的,则他的子节点必须是黑色的(反之不一定成立) ...其中规则4中的空子节点就是说非叶节点可以接子节点的位置,换句话说,就是一个...
  • 底层是数组+链表+红黑树,集数组和链表的优点与一身,线程不安全。 数组: 在新建一个HashMap时,会初始化一个数组,在JDK1.8之前初始化的数组初始容量为16,但在JDK1.8及之后,它实现了一个懒加载功能,就是在第一...
  • 红黑树详解

    万次阅读 多人点赞 2021-09-05 20:01:39
    1.1 红黑树的引入 有了二叉搜索树,为什么还需要平衡二叉树? 在学习二叉搜索树、平衡二叉树时,我们不止一次提到,二叉搜索树容易退化成一条链 这时,查找的时间复杂度从O(log2N)O(log_2N)O(log2​N)也将退化成O(N...
  • 数据结构红黑树规则

    2017-12-30 18:09:41
    1.每一个节点不是黑色就是红色 2.根节点必须是黑色 3.如果节点是红色的,则它的俩个节点必须是黑色的 4.从根到叶节点或者空子节点的每条路径,必须包含相同数目的黑色节点数 ...在这里推荐一本书,如果你看到这...
  • 在学习红黑树之前,我们最好先学习一下AVLTree,并且这两个平衡二叉搜索树的难度差不多,学过了AVLTree之后,红黑树就会更加轻松一些。红黑树只是比较抽象一些,在调整方面较AVLTree要简单一些。......
  • 红黑树:实现红黑树

    2021-02-21 09:34:09
    红黑树规则 每个节点可以是红色或黑色,根始终是黑色。 每个内部节点都有2个子节点[nil,leaves]。 没有2个相邻的红色节点。 对于任何节点Q,从Q到其子孙的任何路径都必须具有相同数量的黑色节点。 1.插入:总是...
  • 但是那些“遗漏”的情况如果存在的话,操作之前的红黑树将违反那几个规则。 写代码的时候很多次因为少考虑情况而导致错误,细节比较多,刚开始rb_node中没有指向父节点的指针,写的快吐血,然后还是加上了。代码具体...
  • 17张图带你解析红黑树的原理!保证你能看懂!

    万次阅读 多人点赞 2019-11-20 16:02:38
    由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空...
  • 学过数据结构都知道二叉树的概念,而又有...今天我们要说的红黑树就是就是一棵非严格均衡的二叉树,均衡二叉树又是在二叉搜索树的基础上增加了自动维持平衡的性质,插入、搜索、删除的效率都比较高。红黑树也是实现 ...
  • 红黑树原理详解

    万次阅读 多人点赞 2019-01-08 19:12:00
       二叉查找由于在频繁的动态更新过程中,可能会出现的高度远大于 log2n的情况,所以就会导致各个操作效率下降,最坏的情况下就会退化为链表,变为O(n).很明显,想要解决这个问题,有效的一种办法就是使得...
  • 红黑树的变色规则

    千次阅读 2021-10-24 15:05:25
    红黑树的变色规则
  • 红黑树变换规则

    2020-08-04 21:17:56
    红黑树选择和颜色变换规则:所有插入点默认为红色 1. 变颜色情况:当前节点的父亲节点、叔叔节点均为红色 (1)把父亲节点设为黑色 (2)叔叔节点设为黑色 (3)祖父节点设为红色 (4)指针定位到祖父节点 2. ...
  • 今天我们要说的红黑树就是就是一棵非严格均衡的二叉树,均衡二叉树又是在二叉搜索树的基础上增加了自动维持平衡的性质,插入、搜索、删除的效率都比较高。红黑树也是实现 TreeMap 存储结构的基石。 文章相关视频...
  • 红黑树应用场景 红黑树特性 红黑树插入节点规则
  • C++红黑树

    千次阅读 多人点赞 2022-03-26 18:13:48
    C++红黑树零、前言一、红黑树的概念及性质二、红黑树结点的定义三、红黑树的插入操作1、变色处理2、单旋+变色3、双旋+变色4、插入实现四、红黑树的验证五、红黑树的删除六、红黑树与**AVL**树的比较 零、前言 本...
  • 【C++】红黑树详解并封装实现map和set

    千次阅读 多人点赞 2022-03-15 22:34:08
    红黑树详解
  • 一、红黑树性质 结点必须是红色或者黑色。 根节点必须是黑色。 叶节点(NIL)必须是黑色(NIL节点无数据,是空节点)。 红色结点不能连续。 从任一节点出发到其每个叶子节点的路径,黑色节点的数量必须相等。 二、...
  • 红黑树旋转规则

    千次阅读 2018-12-26 11:43:53
    红黑旋转规则 新插入的节点如果是外部孙子,则进行单旋转,如下图。 如果先插入的节点是内部孙子,则进行双旋转,如下图。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能...
  • Java中红黑树规则:

    2020-11-09 11:27:53
    红黑树规则: 1.每个节点的颜色是红色或者黑色; 2.根节点必须是黑色; 3.不能出现两个红色节点相连的情况; 4.每个节点到其叶节点的简单路径上的黑色节点数量相同; 5.叶节点是黑色(没有子节点或者父节点的称为叶节点,用...
  • 红黑树的理解

    2018-04-03 20:40:48
    红黑树增加对节点颜色的抽象定义,注意:只是定义,用这个定义的属性,在以后的插入和删除数据的时候,按着定义的颜色属性根据红黑树规则进行旋转调整。红黑树规则:1.节点是红色或黑色。2.根节点是黑色。3.每个叶子...
  • 红黑树(red black tree)2. 插入操作2.1 情况32.2 情况42.2.1 单旋转2.2.2 双旋转3. 删除操作3.1 情况1(X是黑色,X的兄弟是红色)3.2 情况2(X是黑色,X的兄弟是黑色)3.2.1 X的父节点为红色3.2.2 X的父节点为...
  • 红黑树规则 性质1:节点是红色或黑色 性质2:根节点是黑色 性质3:每个叶子节点都是黑色的空节点(NIL节点) 性质4:每个红色节点的两个子节点都是黑色(从每个叶子到根的所有路径不能有两个连续的红色节点,但...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,520
精华内容 13,408
关键字:

红黑树规则

友情链接: identekier-preorder.rar