B+树是B-树的一种变体。
定义:一棵m(m>2)阶的B+树,其基本定义与B-树相同,除了:
- 与B-树一样,如果根结点不是叶结点,则它至少有2棵子树,至多有m棵子树,除根结点外,每个分支结点至少有$$ \lceil{m/2}\rceil $$棵子树,至多有m棵子树;但是B+树非叶结点的关键字个数与子树个数相同,而且每个关键字都不小于对应子树中最大的关键字,即P[i]指向的子树中的关键字在范围(K[i-1],K[i]]中; (另一种定义为:P[i]指向的子树中的关键字在范围[K[i], K[i+1])中,这里的边界值可以为$$ -\infty
$$和$$ +\infty $$; - 非叶结点中不包含指向数据的指针,这样减少了非叶结点占用的空间;
- 每个叶结点中的关键字个数n的范围为$$ \lceil{m/2}\rceil-1 \le n \le m-1 $$;
- 所有的关键字都在叶结点中出现,叶节点中包含了全部的关键字以及指向相应数据的指针;
- 通常在叶结点中增加一个指针,将所有叶节点按关键字从小到大的顺序链接起来,方便顺序访问;
- 在B+树上通常有两个头指针,一个指向根结点,另一个指向关键字最小的树叶;