前言红黑树是一种特殊的B树是B树种2-3-4树的一种特殊实现,红黑树保证了每个节点只会有两个子节点,通过对每个节点进行染色,然后通过不同颜色的节点组合来分别代表2-3-4的2节点、3节点、4节点树的情况 。在学习红黑树之前,我们需要先去了解2-3-4树 。
一、 B树那么如果想要对红黑树有一个较为深刻的理解,我认为首先去理解其根源,也就是B树是必不可少的
1.1 概念树形结构首先可以分为等叉树和不等叉树,等叉树是每个节点的键值个数都相同、子节点个数也都相同,不等叉树是每个节点的键值个数不一定相同、子节点个数也不一定相同 。
最简单的等叉树是二叉树,直接二叉树的作用并不大,我们一般会要求二叉树所有的节点按照一定的顺序排列,这样我们进行插入、删除、查找时效率就会非常高,我们把这样的树叫做二叉搜索树或者二叉查找树 。它的具体定义是这样的,二叉搜索树,要么是个空树,要么符合以下几个条件:
- 左子树如果存在的话,左子树所有节点的键值都要小于根节点的键值
- 右子树如果存在的话,右子树所有节点的键值都要大于根节点的键值
- 它的所有子树也都要符合前面的两个条件(前面的小于同时换成大于也成立) 。
相较于等叉树,我们可以对不等叉树的节点键数值数和插入、删除逻辑添加一些特殊的要求使其能达到绝对平衡的效果,我们把这种树叫做 B树,全称Balance Tree,是一种自平衡树,它和等叉树最大的不同首先表现在存储结构上,等叉树上每个几点的键值数和分叉数都是相同的,而B树不是 。如果某个B树上所有节点的分叉数最大值是m,则把这个B数叫做m阶B数 。下面我们来看一下B树的具体定义:
- 所有节点最多有m个子节点
- 非根非叶子结点至少有m/2(向上取整)个子节点
- 根节点至少有两个子节点(除非总结点数不足3个)
- 所有叶子节点都在同一层
- 任意节点如果有k个键值,则有k+1个子节点指针,键值要按照从小到大排列,子节点数上所有的键值都要在对应的两个键值之间
1.2 2-3-4树2-3-4树其实就是4阶的B树,目前网上讲的红黑树大多数就是2-3树或者是2-3-4树转化而成的 。这里仅对2-3-4树进行讲解
1.3 2-3-4树的插入节点分类
- 2节点:一个节点中有1个键值,2条链接
- 3节点:一个节点中有2个键值,3条链接
- 4节点:一个节点中有3个键值,4条链接
文章插图
然后是3节点的插入,2节点插入之后,转化为4节点,仍保持一个节点的状态
文章插图
4节点插入,由于2-3-4树是4阶B树,所以当对4节点插入的时候,就需要对4节点进行分裂,首先将中间的节点上升,然后,根据B树定义,将新增的节点和叶子的其中一个节点结合,形成一个3节点,比如,下图中要插入4,首先123分裂,之后4根据大小顺序,放在3的右边,和3形成一个3节点 。
文章插图
之后如果继续插入,第二层节点如果再形成4节点的情况下插入,那么分裂之后出来的节点,应该和父节点再构成节点
推荐阅读
- 生命|我国最大的淡水湖 鄱阳湖蒸发了3/4 出现“生命之树”奇观
- 杭州|杭州高温天数创纪录!西湖龙井茶树9成被“晒干”
- 柳树的功效和作用
- “沉舟侧畔千帆过,病树前头万木春” 病树前头万树春
- 用力吸气肾疼
- 7岁女孩身高体重标准
- 如何补血益气 红景天的功效以及成分
- 教师|有效沟通是指领导要让下属知道自己的工作内容以及领导的要求
- 什么是IP 欺骗以及如何防范?
- 清浊祛毒丸的成份以及其作用