B树、B-树、B+树

来源:互联网 发布:淘宝怎样上下架时间 编辑:程序博客网 时间:2024/06/07 05:23

一,B树(Binary Search Tree)

B树即二叉搜索树,二叉排序树或者是空树,或者是满足如下性质的二叉树:

1,若它的左子树非空,则左子树上所有节点的关键字小于根节点的关键字。

2,若它的右子树非空,则右子树上所有节点的关键字大于根节点的关键字。

3,左、右子树本身又各是一颗二叉排序树。


二,B-树

1,B-树的定义

B-树称为多路平衡查找树,是一种组织和维护外存文件系统非常有效的数据结构。B-树是所有节点的平衡因子均为0的多路查找树。B-树中所有节点的孩子节点最大值称为B-树的阶,通常用m表示。一颗B-树或者是一颗空树,或是满足下面要求的m次树:

(1),叶节点:

所有的叶子节点在同一层,并且不带信息。(这里的叶节点就是NULL节点)

(2),根节点

根节点或者没有子树,或者至少有两棵子树。

(3),非叶节点的子树的个数

至少有m / 2棵子树,至多有m - 1棵子树。

(4),非叶节点包含的信息

包含所有的关键字及指向相关记录的指针。

B-树


2,B-树的查找

在B-树中查找指定关键字的方法类似于二叉排序树上的查找,不同的是在每个记录上确定向下查找的路径不一定是二路的,而是多路的。因为一个节点内的关键字的序列是有序的,在一个节点内查找关键字可以使用顺序查找与折半查找。在一棵B-树上查找关键字k的方法为:将k与根节点中的 ki 进行比较

(1),若 k = ki,查找成功。

(2),若 k < k1,顺着指针p0所指的子树继续查找。

(3),若 ki < k <ki+1, 顺着指针pi所指的子树继续查找。

(4),若 ki > kn,顺着指针pn所指的子树继续查找。


3,B-树的特性

(1),关键字集合分布在整棵树中。

(2),任何一个关键字出现且只出现在一个节点中。

(3),搜索有可能在非叶子节点结束。

(4),其搜索性能等价于在关键字全集内做一次二分查找。


三,B+树

1,B+树的定义

B+树是B-树的一种变体,也是一种多路搜索树。一棵m阶B+树满足下面这些条件:

(1),叶节点:

叶子节点包含全部关键字及指向相应记录的指针,而且叶子节点按关键字大小顺序链接。

(2),根节点:

根节点或者没有子树,或者至少有两棵子树。

(3),非叶节点的子树的个数

至少有m / 2棵子树,至多有m棵子树。

(4),非叶节点包含的信息

仅包含它的各个子节点中最大关键字及指向子节点的指针。

B+树


2,B+树的特性

(1),所有的关键字都出现在叶子节点的链表中,且链表中的关键字是有序的。

(2),不可能在非叶子节点命中。

(3),非叶子节点是叶子节点的索引,叶子节点相当于存储数据的数据层。

(4),更适合文件索引系统。


四,B-树与B+树之间的区别

1,叶节点

B-树:所有的叶子节点在同一层,并且不带信息。

B+树:叶子节点包含全部关键字及指向相应记录的指针


2,非叶节点的关键字的个数

B-树:至少有m / 2 - 1个关键字,至多有m - 1个关键字。

B+树:至少有m / 2个关键字,至多有m个关键字。


3,非叶节点保存的信息

B-树:包含所有的关键字及指向相关记录的指针。

B+树:包含它的各个子节点中最大关键字及指向子节点的指针。


4,结构上的差别

B+树中所有的叶子节点都是通过指针链接在一起,而B-树不会这样做。


五,B-树与B+树各自的优点

1,B-树的优点

(1),对于在内部节点的数据,可以直接得到,不用根据叶子节点来定位。


2,B+树的优点:

(1),非叶节点不带有指向记录的指针,一个块中可能容纳更多的索引项。这样做一方面可以降低树的高度,另一方面可以定位更多的叶子节点。

0 0
原创粉丝点击