多路查找树(multi-way search tree),其每一个结点的孩子数可以多于两个,且每一个结点处可以存储多个元素。
在这里,我们讲解它的4种特殊形式:2-3树、2-3-4树、B树和B+树。
2-3树
2-3树是这样的一颗多路查找树:其中的每一个结点都具有两个孩子(我们称它为2结点)或三个孩子(我们称它为3结点)。
一个2结点包含一个元素和两个孩子(或没有孩子),左子树包含的元素小于该元素,右子树包含的元素大于该元素。2结点要么没有孩子,要有就有两个,不能只有一个孩子。
一个3结点包含一小一大两个元素和三个孩子(或没有孩子),一个3结点要么没有孩子,要有就有3个。如果某个3结点有孩子的话,左子树包含的元素小于较小元素的元素,右子树包含的元素大于较大元素的元素,中间子树包含介于两元素之间的元素。
并且2-3树中所有的叶子都在同一层次上。
2-3-4树
有了2-3树的讲解,2-3-4树就很好理解了,它其实就是2-3树的概念扩展,包括了 4结点的使用。一个4结点包含小中大三个元素和4个孩子(或没有孩子),一个4结点要么没有孩子,要么具有4个孩子。
B树
B树(B-tree)是一种平衡的多路查找树,2-3树和2-3-4树都是B树的特例。结点最大的孩子数目称为B树的阶(order),因此2-3树是3阶B树,2-3-4树是4阶B树。
B+树
B+树是应文件系统所需而出的一种B树的变形树,注意严格意义上讲,它其实已经不是树了。在B树中,每一个元素在该树中只出现一次,有可能在叶子结点上,也有可能在分支结点上。而在B+树种,出现在分支结点中的元素会被当作它们在该分支结点位置的中序后继者(叶子结点)中再次列出。另外,每一个叶子结点都会保存一个指向后一叶子结点的指针。
如下图所示,就是一颗B+树的示意,灰色关键字即是根结点中的关键字在叶子结点中再次列出,并且所有叶子结点都链接在一起。