多路平衡查找树(下面简称B-Tree)是一棵自平衡树,可以认为是平衡二叉树的泛化版。一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树,或者是满足下列性质的树:
- 根结点至少有两个子女;
- 每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;
- 除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:┌m/2┐ <= k <= m ;
- 所有的叶子结点都位于同一层。
假设有一棵平衡的3路搜索树,他的结构如图
上图是一个简单的B-Tree,我们通过图对B-Tree的定义对号入座,可以看到满足如下:
- 根结点有两个子女。
- 所有非根节点,关键字个数满足┌3/2┐ - 1 <= 2 <= 3 - 1。
- 除根结点以外的所有结点(不包括叶子结点)的子节点数正好是关键字总数加1。
- 所有的叶子结点都位于同一层。
- 对于N个关键字的B-Tree,它的叶子节点数是N+1。17个关键字 + 1 = 18个叶子节点。
- B-Tree中,所有关键字以从小到大的顺序排列。
- 对于一棵B-Tree,它的查找效率是log┌M/2┐((N+1)/2 )+1。M是路数, N