TIPS:考研中一般情况下对B+树的考查不会太深入,一般都只考察一些概念性的东西,可能会跟B树进行对比。
一颗M阶的B+树一般需要满足如下条件:
1,每个分支结点,最多有M棵子树。
2,非叶根结点最少有两颗子树,其他每个分支结点至少有[m/2](向上取整)棵子树。
对于非叶根结点,我们需要问,什么是非叶根结点?结论如下图:
当根结点不是叶子结点的时候,其他每个分支至少有[m/2](向上取整)棵子树。上述情况二,就是错误的展示。
这么设计的原因很简单:要追求“绝对”平衡,即所有子树高度要相同。
3,结点的子树个数,与关键字个数相等。
4,所有的叶子结点,包含全部关键字信息,以及指向相应记录的指针,叶子结点将关键字按照大小顺序排列,并且相邻叶结点按照大小顺序互相链接起来。(支持顺序查找)
5,所有的分支结点,仅包含它的各个叶子结点中关键字的最大值以及指向其他子结点的指针。
TIPS:B+树中,无论查找成功与否,最终一定都要走到最下面一层结点。
B树与B+树的简单对比:
B树与B+树的详细对比:
1,M阶B+树中,结点的N个关键字,对应N棵子树。
但在M阶B树中,结点的N个关键字,对应N+1棵子树。
2,M阶B+树中,根结点的关键字数,其他结点的关键字数。
但在M阶B树中,根结点的关键字数,其他结点的关键字数。
3,M阶B+树中,叶结点包含全部关键字,非叶子结点中出现过的关键字也会出现在叶结点中。(可以理解为非叶子结点的关键字为索引,导向叶子结点的)。
但在M阶B树中,各个结点中包含的关键字是不重复的。
4,M阶B+树中,叶子结点包含信息,所有的非叶结点仅起索引作用,非叶结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。
但在M阶B树中,B树的结点中都包含了关键字对应的记录的存储地址。
下面为了解部分:(不懂也没事,仅作了解)
在B+树中,非叶结点不含有该关键字对应记录的存储地址。
我们可以让一个磁盘块包含更多的关键字,使得B+树的阶更大,树高更矮,因此都读磁盘次数更少,查找速度更快。