1、多路查找树(mutil-way search tree)定义
多路查找树,其每一个节点的孩子数可以多于两个,且每一个节点处可以存储多个元素。
由于它是查找树,所以元素之间存在某种特定的排序关系。由于多路查找树的定义(特点):每个节点可以有多个孩子;每个节点可以存储多个元素。所有它有很多特殊形式:2-3树、2-3-4树、B树、B+树、B-树。
2、B树(B-Tree即B-树):B树是一种平衡的多路查找树,2-3树和2-3-4树都是B树的特例。节点最大的孩子数目称为B树的阶(Order)。2-3树是3阶B树,2-3-4树是4阶B树。
m阶B树具有如下属性:
- 如果根节点不是叶节点,则其至少有两颗子树。
- 所有叶子节点都位于同一层。
- 每个非根的分支节点都至少有k-1个元素和k个孩子,其中ceil(m/2)<=k<=m。ceil(m/2)是m/2向上取整。每一个叶子节点都至少有k-1个元素。
- 每个非终端结点中包含有n个关键字信息: (n,A0,K1,A1,K2,A2,......,Kn,An)。其中:
a) Ki (i=1...n)为关键字,且关键字按顺序升序排序K(i-1)< Ki。
b) Ai为指向子树根节点的指针,且指针A(i-1)指向子树中所有结点的关键字均小于Ki,但都大于K(i-1)。
c) 关键字的个数n必须满足: [ceil(m / 2)-1]<= n <= m-1
3、B+树:是应文件系统所需而产生的一种B-tree的变形树。B+树是B树的一种变形,在B树中,每一个元素在树中只出现一次,有可能在叶子节点上,也有可能在分支节点上。而在B+树中,出现在分支节点中的元素会被当作它们在该分支节点位置的中序后继者中再次出现(就是分支节点中的元素会在其对应的叶子节点末尾再次出现)。另外,每一个叶子节点都会保存一个指向后一个叶子节点的指针。如下图:
一颗m阶B+树和m阶B树的差异:
1.有n棵子树的结点中含有n个关键字; (而B 树是n棵子树有n-1个关键字)
2.所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。 (而B 树的叶子节点并没有包括全部需要查找的信息)
3.所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。 (而B 树的非终节点也包含需要查找的有效信息)
B+树的结构适合带有范围的查找,而哈希表不适合带范围的查找。
来源:oschina
链接:https://my.oschina.net/u/2444659/blog/702908