B-树与B+树

来源:互联网 发布:mac怎么下载qq游戏 编辑:程序博客网 时间:2024/05/22 05:14
在大规模数据查找中大量信息存储在外存磁盘中,选择正确的数据结构可以显著降低查找时间。B-树和B+树就是两种常见的高效的外存数据结构。

B-树:

B-树主要应用在文件系统中。为了将大型数据库文件存储在硬盘上 以减少访问硬盘次数为目的 在此提出了一种平衡多路查找树——B-树结构 。

B-树是一种平衡的多路查找树。注意哦,是平衡的,根节点到每个叶子节点的深度都一样哦。是查找树说明B-树中的数据都是有序的。这两点非常重要。
一棵m阶(每个节点最多有m棵子树)的B-树,或者是空树,或者为满足一下特性的m叉树:
(1)树中的每个节点最多有m棵子树
(2)树的根节点至少有两个子树
(3)树的所有叶子节点都在同一层
(4)除了根节点以外,其他非叶子节点至少要有m/2(取上界)个子树
(5)有n棵子树的非叶子节点包括的信息如下(恰好包括n-1个关键字):
(n,T0,K1,T1,K2,T2,...,Kn,Tn)
n是关键字的个数,n+1是子树的个数;子树比关键字数量多一个哦。Ki代表关键字,Ki<Ki+1,排序好的嘛,Ti代表子树的指针,Ti-1所指的子树中所有节点的关键字均小于Ki,Tn所指子树中所有节点的关键字均大于Kn。


根据以上的特性我们能看出B-树往往至少是半满的,有较少的层数,而且是完全平衡的。
一棵4阶B-树,每个节点最多有3个关键字,4棵子树,每个节点上的关键字都是有序的查找最坏的次数是logm/2(N+1/2)+1;
插入操作情况比较麻烦需要3种情况,一种是子树没有满,直接插入就行了。第二种是子树满了,插入后将中间大小节点的关键字向父节点移动。第三种情况是根节点如果也是满的话就产生新的根节点,也就是增加了树的高度。


B+树:
B+树叶是一种多叉树结构,通常用于数九和文件系统中。B+树的特点能够保持数据稳定有序,其插入与修改拥有较稳定的时间复杂度。B+树是B-树的变形树。在B+树中,对数据的指引指向叶节点,内部节点的关键字只是充当划分子树的分界值。叶节点被连接成一个序列,查找每个数据的时间都是一颗完整的到叶子节点的路径。
一颗m阶B+树或者空树,或者满足下列特征的m叉树。
(1)树中的每个节点最多有m棵子树
(2)树的根节点至少有两个子树
(3)树的所有叶子节点都在同一层
(4)除了根节点以外,其他非叶子节点至少要有m/2(取上界)个子树
(5)有n棵子树的非叶子节点包括的信息如下(恰好包括n-1个关键字):
(n,T1,K1,T2,K2,...,Kn,Tn)
n为关键字的个数,也是子树的个数,这一点与B-树是不同的,B-树种子树个数比关键字多1。Ki是关键字,从小到大排序,Ti指向子树根节点的指针,且指针T所指子树中所有节点的关键字均不大于Ki。

查找时非叶子节点不能停下,这些Key值只是用来区分寻找方向的,最后一直要查找到叶子节点。插入删除跟B-树基本一致。


0 0
原创粉丝点击