红黑树的本质是2-3-4树,所以我们先掌握了2-3-4树,那么红黑树就非常容易了。本文重点来介绍2-3-4树。

2-3-4树

1 概念介绍

  2-3-4树是四阶的 B树(Balance Tree),他属于一种多路查找树,它的结构有以下限制:
  所有叶子节点都拥有相同的深度。
  节点只能是 2-节点、3-节点、4-节点之一。

  • 2-节点:包含 1 个元素的节点,有 2 个子节点;
  • 3-节点:包含 2 个元素的节点,有 3 个子节点;
  • 4-节点:包含 3 个元素的节点,有 4 个子节点;

所有节点必须至少包含1个元素
元素始终保持排序顺序,整体上保持二叉查找树的性质,即父结点大于左子结点,小于右子结点;
而且结点有多个元素时,每个元素必须大于它左边的和它的左子树中元素。

下图是一个典型的 2-3-4树

2 生成的过程

  接下来我们通过演示来看看2-3-4树生成的过程
第一次插入—2节点

插入第二个节点–3节点 合并

插入第三个节点—4节点 合并

插入第4个节点—需要分裂

插入6

插入7

插入8

插入9

插入10

插入11

插入12

最后我们插入1来看看效果

  到这儿相信大家对于2-3-4树应该有了个直观的认知了。

3 和红黑树的等价关系

  红黑树起源于2-3-4树,它的本质就是2-3-4树。

3.1 2节点

​   一个2节点对应的红黑树节点就是一个黑色节点

3.2 3节点

  一个三节点可以有两种情况的红黑树节点,一种是右倾,一种是左倾,所以一个2-3-4树可以有多个红黑树

原则:上黑下红

3.3 4节点

  一个四节点转换的情况只有一种,中间节点黑色,左右节点红色

3.4 裂变状态

  还有就是在2-3-4树中存在的裂变状态。转换为红黑树后会先变色(不能有两个相邻的红色节点)。

4 转换为红黑树

  接下来具体看看一个2-3-4树是如何转换为对应的红黑树的,

原始的2-3-4树:

  按照右倾规则来转换为:

  转换后满足黑色节点平衡的要求
  按照左倾规则来转换为:

  通过对2-3-4树和红黑树的等价关系,对于我们后面分析红黑树的内容会非常有帮助!!!

掌握了2-3-4树也就掌握了红黑树,不信进来看看,建议收藏!相关推荐

  1. 第五章 树16 AcWing 1628. 判断红黑树

    第五章 树16 AcWing 1628. 判断红黑树 原题链接 AcWing 1628. 判断红黑树 算法标签 平衡树 思路 代码 #pragma GCC optimize(2) #pragma GC ...

  2. 【数据结构 树:二叉树分类、红黑树讲解】

    常用术语 节点:每一个小圈圈 父节点 : 下面有节点的节点 子节点 : 有父节点的节点 叶子节点  :没有子节点的节点 节点的权  :节点中的值 路径  :从根节点(root节点)到该节点的路线 层: ...

  3. 浅谈树形结构的特性和应用(上):多叉树,红黑树,堆,Trie树,B树,B+树......

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 上篇文章我们主要介绍了线性数据结构,本篇233酱带大家看看 无所不 ...

  4. Linux内核之于红黑树and AVL树

    为什么Linux早先使用AVL树而后来倾向于红黑树?        实际上这是由红黑树的实用主义特质导致的结果,本短文依然是形而上的观点.红黑树可以直接由2-3树导出,我们可以不再提红黑树,而只提2- ...

  5. 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)

    原文:http://blog.csdn.net/sup_heaven/article/details/39313731 数据结构中常见的树(BST二叉搜索树.AVL平衡二叉树.RBT红黑树.B-树.B ...

  6. 大名鼎鼎的红黑树,你get了么?2-3树 绝对平衡 右旋转 左旋转 颜色反转

    前言 11.1新的一月加油!这个购物狂欢的季节,一看,已囊中羞涩!赶紧来恶补一下红黑树和2-3树吧!红黑树真的算是大名鼎鼎了吧?即使你不了解它,但一定听过吧?下面跟随我来揭开神秘的面纱吧! 一.2-3 ...

  7. 红黑树、B(+)树、跳表、AVL对比

    在网上学习了一些材料. 这一篇:https://www.zhihu.com/question/30527705 AVL树:最早的平衡二叉树之一.应用相对其他数据结构比较少.windows对进程地址空间 ...

  8. MySQL数据库的红黑树优化_为什么Mysql用B+树做索引而不用B-树或红黑树

    B+树做索引而不用B-树 那么Mysql如何衡量查询效率呢?– 磁盘IO次数. 一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上. ...

  9. 二叉排序树、AVL树、红黑树、B树、B+树、Hash树、

    二叉排序树 1.基本应用 二叉排序树也称为也叫二叉查找树,二叉搜索树, BST. 满足二叉查找树的一般性质,是指一棵空树具有如下性质: 对于二叉树中的任何一个非叶子节点,要求左子节点比当前节点值小,右 ...

最新文章

  1. 李开复对话Yoshua Bengio:AI技术的下一个突破
  2. 解决Win8.1键盘输入后鼠标左键响应延迟的问题
  3. 【批处理学习笔记】第二十四课:直接传递
  4. 网络推广网站总结降低网站跳出率的技巧有哪些?
  5. 淘宝文件系统大文件结构
  6. 判断当前所使用python的版本和来源
  7. 初见shell,设置端口参数
  8. python处理excel可视化_python如何将excel数据处理可视化
  9. 知识图谱应用合辑第一篇:多模态知识图谱的使用领域及最新进展
  10. android读取excel文件_python里读写excel等数据文件的几种常用方式
  11. LeetCode 400. 第N个数字(数学)
  12. ajax jinja,在Flask中根据ajax response呈现Jinja模板
  13. flowable 中文文档_滴滴实习收获 | 产品经理就是写文档和开会沟通的吗?
  14. apache-commons 常用工具类
  15. TensorFlow神经网络(九)VGG net论文阅读笔记
  16. 如何在centos上安装epel源
  17. canvas 绘制直线 并选中_canvas绘制飞线效果
  18. python 爬虫视频教学
  19. Jrebel激活破解
  20. 服务器排队系统怎么做,多服务器排队系统的平均排队时间的近似分析

热门文章

  1. 数据库连接10060_通过mysql 连接远程数据库时,输入密码后,提示10060错误
  2. Java DB loadBalance设计
  3. 虚拟机正在安装虚拟网络驱动程序这里不动了怎么办?
  4. 【老生谈算法】matlab实现三相感应电动机(异步电机)特性研究仿真——三相感应电动机
  5. 转 superagent
  6. Out of Distribution(OoD)检测相关方法综述
  7. 那些年,我培养过的大佬
  8. 二手车价格预测预测-特征工程
  9. 详细讲解haskell的类
  10. Linux crontab 命令使用案例 @LCF