一、基本介绍
2-3树:满足二分搜索树的基本性质,是一颗绝对平衡的树,节点可以存放一个或两个元素,每个节点有2个或3个孩子(如果对二分搜索树不太了解,可以去看这篇文章【数据结构】二分搜索树小结)
如下图所示都是2-3树,左边是节点存放了一个元素,右边是节点存放了两个元素,对于右边的图,左子树<b,中间的孩子树则在b、c之间,右孩子则大于c。
下图是一个实例,可以好好体会一下什么是2-3树,这里说一下什么是绝对平衡树,就是根节点到任意节点所经过的节点数量绝对相同,节点的左右孩子高度一定一样,根据这个性值,就可以知道二叉搜索树(可能形成链式结构)、AVL树(左右子树高度不超过1)、堆(最后一层叶子节点可能没有填满)...这些都不是绝对平衡树。
下面就让我们通过图解插入元素去理解2-3树是如何实现绝对平衡的
二、图解插入元素流程
由于2-3树是一颗绝对平衡的树,那么在插入元素时就不能将元素插入到为空的位置(因为要保证绝对平衡),如下图。
此时的根节点root值为42,待插入的元素值为37,需要如何插入元素才能保证插入后仍然是一颗绝对平衡的树呢?这时root节点的孩子节点为空,如果直接插入其孩子节点中那显然就不是一颗绝对平衡的树了。