美文网首页
七张图带你了解红黑树变色、左旋和右旋

七张图带你了解红黑树变色、左旋和右旋

作者: 奋斗_0268 | 来源:发表于2020-12-13 12:26 被阅读0次

红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,

红黑树五大特性

1、所有节点非红即黑

2、根节点是黑色

3、页节点是黑色

4、不能有连续的红色

5、任意节点到叶子节点路径中有相同数量的黑色节点

变色

如果当前节点的父亲节点和叔叔节点均是红色,那么执行以下变色操作:

父 --> 黑

叔 --> 黑

爷 --> 红

开始分析爷爷是否满足红黑树特性

左旋

条件:

父亲是红色

叔叔是黑色

当前是右子树

执行:

已父亲进行旋转

右旋

条件:

父亲是红色

叔叔是黑色

当前是左子树

执行:

父亲节点 变为 黑色

爷爷节点变为红色

再已爷爷节点进行旋转

流程

下面已一个具体的实例进行分析红黑树的执行过程:

新插入一个节点6(所有新插入节点均为红色),不满足条件4(不能有连续的红色),且当前节点父亲和叔叔均为红色 --> 则进行变色

此时5、12不满足”不能有连续的红色“,又因为12的父亲是红色,叔叔是黑色,且当前是右子树 --> 已父亲 5 左旋

此事5、12不满足”不能有连续的红色“,5的父亲是红色,叔叔是黑色,且在左子树 —> 先父亲变黑色、爷爷变红色 —> 已爷爷节点 19 右旋

至此:一个红黑树就完成了


相关文章

  • 七张图带你了解红黑树变色、左旋和右旋

    红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构, 红黑树五大特...

  • 拿下红黑树

    红黑树 红黑树、2-3树的简单定义: 实现红黑树的基本结构以及添加操作(维护定义,左旋、右旋、颜色反转) 红黑树与...

  • Java红黑树

    首先创建树结构 创建红黑树类 插入方法 在插入的时候,要进行自平衡,那么就要涉及到几个原子操作:左旋/右旋,变色 ...

  • 红黑树

    红黑树: 根节点是黑 插入新节点是红链 左旋右旋 反转颜色,A节点左右子节点都是红链 则子节点全转为黑链,同时A变...

  • 红黑树

    本文的主要内容:1、红黑树的基本概念以及最重要的5点规则。2、红黑树的左旋转、右旋转、重新着色的原理与Java实现...

  • 二叉搜索树-红黑树数据是怎样插入的???

    红黑树 新数据插入,节点变化过程图示, 注意, 树节点进行 重新作色,,或 节点左旋 右旋,是为了保持树平衡而做出...

  • 基于LinkedHashMap手写LRU淘汰策略

    上一篇 <<

  • AVLtTree

    左旋转 右旋转 双旋转 左旋右旋规律 右旋右低,左旋左低,左高右旋,右高左旋左旋动左。右旋动右。新节点代替当前根节...

  • 红黑树及源码的套路(中)

    上文介绍了跟红黑树相关的知识点,尤其是左旋、右旋、自平衡等概念。本文开始结合源码对旋转和平衡进行深入分析。 Has...

  • 红黑树分析笔记

    阅读本文的前提 1、知道二叉查找树的概念,插入、删除和查找操作;2、知道二叉树的左旋和右旋。3、了解二叉平衡树(A...

网友评论

      本文标题:七张图带你了解红黑树变色、左旋和右旋

      本文链接:https://www.haomeiwen.com/subject/bjnugktx.html