B树和B+树

一、B树

1、什么是B树

他是一种平衡多叉树

2、M阶B树的特点

(1)每个节点至多有m个子节点
(2)除根节点和叶节点外,其他每个节点至少有m/2(向上取整)子节点
(3)根节点至少有两个子节点
唯一列外的是根节点就是叶节点是没有子节点
此时B树只包含一个节点
(4)所有叶节点都在同一层
(5)每个结点最多有m-1个关键字,每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。
 

3、B树的作用

B树常用于文件索引

4、B树的常见操作

插入、删除、查找

二、B+树

1、什么是B+树

各种资料上B+树的定义各有不同,一种定义方式是关键字个数和孩子结点个数相同。这里我们采取维基百科上所定义的方式,即关键字个数比孩子结点个数小1,这种方式是和B树基本等价的。

2、B+树的特点

(1)B+树与B树最大的不同是内部结点不保存数据,只用于索引,所有数据(或者说记录)都保存在叶子结点中。

(2)内部结点中的key都按照从小到大的顺序排列,对于内部结点中的一个key,左树中的所有key都小于它,右子树中的key都大于等于它。叶子结点中的记录也按照key的大小排列。

(3) 每个叶子结点都存有相邻叶子结点的指针,叶子结点本身依关键字的大小自小而大顺序链接。

3、B+树的作用

B+树常用于数据库索引

4、B+树的常见操作

插入、删除、查找

三、B树和B+树的区别

1、关键字的数量不同;B+树中分支结点有m个关键字,其叶子结点也有m个,其关键字只是起到了一个索引的作用,但是B树虽然也有m个子结点,但是其只拥有m-1个关键字。

2、存储的位置不同;B+树中的数据都存储在叶子结点上,也就是其所有叶子结点的数据组合起来就是完整的数据,但是B树的数据存储在每一个结点中,并不仅仅存储在叶子结点上。

3、分支结点的构造不同;B+树的分支结点仅仅存储着关键字信息和儿子的指针(这里的指针指的是磁盘块的偏移量),也就是说内部结点仅仅包含着索引信息。

4、查询不同;B树在找到具体的数值以后,则结束,而B+树则需要通过索引找到叶子结点中的数据才结束,也就是说B+树的搜索过程中走了一条从根结点到叶子结点的路径。

posted on 2019-03-19 11:49  天高任鸟飞,海阔任鱼游  阅读(335)  评论(0编辑  收藏  举报