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树的主要内容,如果未能解决你的问题,请参考以下文章

数据结构和算法(Golang实现)(29)查找算法-2-3树和左倾红黑树

数据结构算法-1.1.1 红黑树与二叉树

数据结构算法-1.1.1 红黑树与二叉树

数据结构算法-1.1.1 红黑树与二叉树

数据结构与算法:树 红黑树

数据结构与算法:树 红黑树