红黑树原理分析 2-3-4树

2-3-4树

2-3-4 树把数据存储在叫做元素的单独单元中。它们组合成节点,每个节点都是下列之一

2-节点,就是说,它包含 1 个元素和 2 个儿子,
3-节点,就是说,它包含 2 个元素和 3 个儿子,
4-节点,就是说,它包含 3 个元素和 4 个儿子 。

每个儿子都是(可能为空)一个子 2-3-4 树。根节点是其中没有父亲的那个节点;它在遍历树的时候充当起点,因为从它可以到达所有的其他节点。叶子节点是有至少一个空儿子的节点。

同B树一样,2-3-4 树是有序的:每个元素必须大于或等于它左边的和它的左子树中的任何其他元素。每个儿子因此成为了由它的左和右元素界定的一个区间。

2-3-4 树是红黑树的一种等同,这意味着它们是等价的数据结构。换句话说,对于每个 2-3-4 树,都存在着至少一个数据元素是相同次序的红黑树。在 2-3-4 树上的插入和删除操作也等价于在红黑树中的颜色翻转和旋转。这使得它成为理解红黑树背后的逻辑的重要工具。

一个典型的2-3-4树如下:

在这里插入图片描述

树的生长过程

依次插入2,3,4,5,6,7,8,9,10,11,1

插入规则,优先合并插入元素,直到合并超过4个元素,就是说元素插入时要和4-节点(含3元素)合并时,会向上裂变,原来4-节点中间的元素会向上生长一层

注意,因为这种从叶子节点向上裂变生长的模式,2-3-4永远是一颗平衡二叉搜索树

(1)插入2
在这里插入图片描述
(2)插入3变为3-节点

在这里插入图片描述
(3)插入4变为4-节点
在这里插入图片描述

(4)插入5之后,4-节点会向上裂变,元素3变为上一层的父节点
在这里插入图片描述
(5)插入6之后,比3大,往右子树上靠,合并为新的4-节点
在这里插入图片描述
(6)插入7,大于3,往右子树上靠,(4,5,6)4-节点裂变,元素5变为上一层的父节点,然后再与元素3合并为新的3-节点

在这里插入图片描述在这里插入图片描述

(7)插入8,比5大,往右子树靠,合并成新的4-节点
在这里插入图片描述
(8)插入9,(6,7,8)4-节点裂变,元素7变为上一层的父节点,和(3,5)合并为新的4-节点
在这里插入图片描述
(9)插入10,形成新的4-节点
在这里插入图片描述(10)插入11,(8,9,10)4-节点分裂,元素9变为上一层父节点,但是(3,5,7)也是4-节点,所以继续上向裂变,此时中间元素5变为最上层父节点。

在这里插入图片描述
在这里插入图片描述
(11)插入1,往左子树上找,最终和2合并为3-节点
在这里插入图片描述

2-3-4树与红黑树

(1)转变为红黑树规则

2-节点必转为黑色节点

3-节点有两种转换形式,一种左倾,一种右倾,如图,这也意味着一个2-3-4树可以转换为多个状态的红黑树

4-节点中间元素变为父节点并为黑色,剩下两个子节点为红色

如果裂变之后新的父节点为红色,两个字节点为黑色
在这里插入图片描述
在这里插入图片描述

(2)转变成的红黑树

在这里插入图片描述

(3)推导红黑树性质

性质1:根节点必是黑色

参照上面的转变红黑树规则,可以发现2-节点必为黑色节点;而无论是3-节点还是4-节点,转换红黑树后父节点都是黑色节点,所以红黑树根节点必为黑色节点。

性质2:红色节点的两个子节点必为黑色节点

在这里插入图片描述
意思就是不可能有两个红色节点,以红色节点7来说,不管下面子节点是2-节点、3-节点还是4-节点,转换红黑树时其父节点都是黑色节点,成为7的子节点,如下图所示:

在这里插入图片描述

性质3:所有叶子都是黑色

这个不用推导,默认所有实际叶子节点的两个空子节点为黑色节点。
在这里插入图片描述

性质4: 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点(黑色平衡)

如图所示:2-3-4树转为红黑树过程中,每个2-节点、3-节点、4-节点转换时至少产生一个黑色节点且为父节点,所以在下图中每一层都固定有一个黑节点,根节点5无论到10、11、12都抽象等同于到达(10,11,12)这个集合,包含的黑色节点都等于所在层数-任一节点的层数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值