Java数据结构和算法--红黑树与2-3树
Posted huigelaile
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数据结构和算法--红黑树与2-3树相关的知识,希望对你有一定的参考价值。
红黑树规则:
1、根节点与叶节点都是黑色节点
2、每个红色节点的两个子节点都是黑色节点,反之,不做要求,换句话说就是不能有连续两个红色节点
3、从根节点到所有叶子节点上的黑色节点数量是相同的
一般对红黑树的讲述都是先给出这样的定义,这样想对不太容易理解的,而在算法4一书中,直接跳过这些规则,而讲述了红黑树与2-3树的等价性
如果我们先了解2-3树,理解了红黑树与2-3树之间的关系,回过头就会发现红黑树不难
2-3树:
2-3树满足二分搜索树的基本性质,但是不是二叉树
2-3树节点可以存放一个元素或两个元素,每个节点有两个(2节点)或三个子节点(3节点),这就是2-3树
2-3树是一个绝对平衡的树
2-3树的绝对平衡性:
1、2-3树新插入的节点一定不能插到空节点的位置
2、如果一个新节点插入到2节点,就会形成3节点
3、如果一个心机诶单插入到3节点,临时形成4节点,然后进行变形
如果这个节点是根节点,这样就处理完了,如果插入的节点是叶子节点
1).父节点为2-节点
2).父节点为3-节点
通过上面的规则,实现了2-3树的绝对平衡
红黑树和2-3树的等价性:
将2节点与3节点类比到红黑树
通过上面的过程,我们得到红黑树,所有红色节点都是左倾斜
实践:
所以此时我们很容易就能把2-3树转换为红黑树
原来的2-3树有三个3-节点,所以红黑树中就有三个红色节点
以上是关于Java数据结构和算法--红黑树与2-3树的主要内容,如果未能解决你的问题,请参考以下文章