2-3 树理解起来比红黑树容易很多,并且在理解它的基础上增加一个变更,就成了红黑树(尽管不是通常使用的那种红黑树)。因此学习红黑树的时候,最好先学习 2-3 树。 2-3 树与 AVL 树在树高的增长上有所不同:AVL 树是从上到下增加树高,根节点只会因为旋转而改变;而 2-3 树是从下到上增加树高,节点值是...
这里类比到2-3树中,任意一个节点到叶子节点的经过的节点都是相同的,因为2-3是绝对平衡的树 从2-3树类比过来,任意一个节点到叶子节点经过的节点,无论是2节点还是3节点,肯定包含一个黑色的节点,但是红色不一定的,所以才有了第五条规则/特性 我们解释完了这五条特性,通过2-3树去理解,相比直接去死记硬背,简...
综上讲解了2-3树 的核心内容,通过本章节的学习,可以了解2-3树是一种怎样的数据结构、如何插入数据、删除数据以及数据的索引,同时要知道这是一种平衡树的结构,包括2-叉和3-叉节点以及数结构随着数据的添加删除调整。 2-3树是红黑树的演变前身,通过这一章节的学习就很容易学习红黑树的相关知识,在红黑树中添加数...
3.该树是完美黑色平衡的,即任意空链接到根节点的路径上的黑链接数量相同(和2-3树等价的,任意节点到其叶子节点的高度都是相同的)。 因为2-3树不存在永久的4-节点,4-节点终归要分解的(在2-3-4树中,为了更好地插入和删除,4-节点可存在于叶子节点和非叶子节点)2-3树一样不行,所以在2-3树中没有任何一...
说明:2-3树一颗绝对平衡的树(绝对平衡:对于任意一个节点,左右子树高度相同) 3、维护绝对平衡 2-3树在插入过程中如何维护绝对平衡呢?进行画图演示,实在有点不好画,如下图: 说明: 1、不能将新节点插入到空节点 因为那样如上图,就不满足绝对平衡了,所以可以将37和42合并,2-3支持3节点。
在了解红黑树之前,我们先来认识2-3树,在算法(第4版)里也是先从2-3树切入到红黑树的。并且了解2-3树对于理解B类树也会有帮助,因为2-3树可以说就是基础的B类树。 2-3树的特性: 满足二分搜索树的基本性质 节点可以存放一个元素或者两个元素,或者说数据项 ...
3叉节点,有三个子树,节点中有两个元素,左树元素更小,右树元素更大,中间树介于两个父元素之间。 插入操作如下图所示 红黑树 红黑树可以理解为实现了2-3树的BST(binary search tree),它是一个自平衡树,保证在最坏的情况下的操作也是O(lg(n))
大家都听说过红黑树,也都知道红黑树很厉害,是计算机里面评价非常高的数据结构。但是每当想学习红黑树的时候,却总是找不到通俗易懂很好理解的学习资料。
我们知道2-3树能保证在插入元素后,树依然保持平衡状态,它最坏的情况就是所有的子节点都是2-节点,这样树的高度为logN,但是和普通的二叉查找树相比,最坏的情况下树的高度为N,确实能保证最坏情况下的时间复杂度,但是2-3树实现起来过于复杂,所以我们这里介绍一种基于2-3树实现的树结构 —红黑树。
2-3树是绝对平衡的 2-3树.png 红黑树是一种黑平衡的树 红黑树添加新元素 image.png 红黑树实现代码如下: public class RBTree<K extends Comparable<K>, V> { privateclassNode{privateKkey;privateVvalue;privateNodeleft,right;privateboolean color;publicNode(Kkey,Vvalue){this.key=key;this.value=value...