二、B树的构建
m阶B树允许每个结点最多有m-1个键值(Key值),m个指针。
4阶B树允许每个节点最多有3个键值、4个指标。4阶B树又称为2-3-4树。
- B树允许多个键值存放在一个节点。其每个节点内的键值是经过排序的,以方便搜寻。如果节点存放的键值数目达到上限,就分裂成两个新节点,并将中间的键值向上插入其父节点(没有达到上限不用分裂)。这种树状结构可保证所有叶节点都处于同一个高度。
- 如果达到上限时,结点中的键值个数为奇数的时候,只需要将中间值马上去即可;如果是偶数,可以选择中间的前一个或者中间的后一个都可以。
logm(n+1) ≤ h ≤ logd(n+1)/2+1
注: m:子树的数量(order),d=┌m/2┐,n:键值数据的数量
【示例】
以下示范一个4阶B树的建构过程。
① 假设输入的数据库为{ A, S, E, A, R, C, H, I, N, G, E, X, A, M, P, L, E },加入ASE时因为没有超过上限,所以不用分裂。第二个A加入到{A, E, S}节点后,将会超过2-3-4树的限制。这时候便要将{A, A, E, S}予以分裂(超过限制所以要分解),并将其中间值E取出成为父节点。
② 插入新键值I后,{H, I, R, S}需要分裂成{H, I}和{S} 。中间值R则向上插入其父节点。
也可以提中间值I上去:
③插入新键值G后,{G, H, I, N}需要分裂成{G, H}和{N} 。中间值I则向上插入其父节点。