Skip to content

Latest commit

 

History

History
19 lines (13 loc) · 1.37 KB

b+_tree.md

File metadata and controls

19 lines (13 loc) · 1.37 KB

B+树

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+树上通常有两个头指针,一个指向根结点,另一个指向关键字最小的树叶;

下图为一棵3阶的B+树:

注意:B+树的非叶结点中没有指向数据的指针,如下图所示: