B树和B+树的区别?

[TOC]

B树

image-20201103195345798

B Tree 指的是 Balance Tree,也就是平衡树,相当于是一棵多叉查找树,对于一棵 m 阶的 B 树具有如下特性:

1、根节点至少有两个孩子。

2、每个中间节点都包含 k - 1 个元素和 k 个孩子,其中 ceil(m/2) <= k <= m。

3、每个节点中的元素从小到大排列,节点当中的 k - 1 个元素正好是 k 个孩子包含的元素的值域划分。

4、每一个叶子节点都包含 k - 1 个元素,其中 ceil(m/2) <= k <= m。

5、所有的叶子节点都位于同一侧。

B+树

image-20201103195404475

对于一棵 m 阶的 B+ 树具有如下特性:

1、根节点至少有两个孩子。

2、每个中间节点都包含 k 个元素和 k 个孩子,其中 ceil(m/2) <= k <= m。

3、一个节点中的 key 从左到右非递减排列

4、所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。 (而B 树的叶子节点并没有包括全部需要查找的信息)