b树和b+树

二叉树优化的是比较次数,而B/B+数优化的是磁盘读写次数

 

b树是一种多路平衡查找树,它的每一个节点最多包含k个孩子,k被称为B树的阶。k的大小取决于磁盘页的大小。

一个m阶的B树具有如下几个特征:

1.根结点至少有两个子女。

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

3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m

4.所有的叶子结点都位于同一层。

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

b树主要用于文件系统以及部分数据库索引。

 

b+树是b树的变体,查询性能更好。

b+树的特征:

1. 有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。

2. 所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3. 所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

 

 

1. b+树的中间节点不保存数据,所以磁盘页可以容纳更多的节点元素,更加矮胖。

2. b+树查询必须查找到叶子节点,b树只要匹配到即可。所以,b+树更加稳定(但是不慢)。

3. 对于范围查询来说,b+树只需要遍历叶子节点链表即可,b树却需要重复中序遍历。

b树:

b树和b+树

b+树:

b树和b+树