学习B树

B树是一种平衡的多叉树,一棵m阶B树是一棵平衡的m路搜索树。它如果不是空树的话,必须满足下列的性质:
1、根结点至少有两个子女;(即根结点的度数大于等于2)
2、每个非根结点所包含的关键字个数j满足:int(m/2)<=j<=m-1;(如果m为2,则j==1,一定为二叉树)
3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数k满足int(m/2)<=k<=m;
4、所有的叶子结点都位于同一层

ps:
1,结点的度数:即结点拥有的子树数。
2,树的阶数(路数):即一个结点最多能有多少个子节点,也就是每个结点上的键值个数,比如二叉树的阶数是2.
3,树的关键字:即键值key,比如 查找树 某个结点的键值为0,该结点就必须排在键值1的结点的左边。对结点排序起作用的那个值就是键值。

在B树中,每个结点中关键字从小到大排列,并且当该结点的孩子是非叶子结点时,该k-1个关键字正好是k个孩子包含的关键字的值域的划分。

因为叶子结点不包含关键字,所以可以把叶子结点看成在树里实际上并不存在外部结点,指向这些外部结点的指针为空,叶子结点的数目正好等于树中所包含的关键字总个数加1。

B树中的一个包含n个关键字,n+1个指针的结点一般形式为:(N,P0,K1,P1,K2,P2,...,Kn,Pn),其中Ki为关键字,K1<K2<...<Kn,Pi是指向包括Ki到Ki+1之间的关键字的子树的指针。

在B树中查找关键字的方法是,首先把根结点取来,在根结点所包含的关键字K1,K2,...Kn查找给定的关键字,可用顺序查找或二分查找法,若找到等于给定值的关键字,则查找成功;否则,一定可以确定要查找的关键字在Ki与Ki+1之间,Pi为指向子树结点的指针,此时取指针Pi所指的结点继续查找,直到找到,或者指针Pi为空时查找失败。

*B树的性能(对于N个关键字最多需要查询多少层)
设B-树包含N个关键字,因此有N+1个叶子结点,叶子都在第I层。因为根至少有两个孩子,因此第二层至少有两个结点。除根和叶子外,其它结点至少有┌m/2┐个孩子,因此在第三层至少有2*┌m/2┐个结点,在第四层至少有2*(┌m/2┐^2)个结点,...,在第I层至少有2*(┌m/2┐^(l-2) )个结点,于是有:
N+1 ≥ 2*┌m/2┐I-2
考虑第L层的结点个数为N+1,那么2*(┌m/2┐^(l-2))≤N+1,也就是L层的最少结点数刚好达到N+1个
即: I≤ log┌m/2┐((N+1)/2 )+2
所以,当B-树包含N个关键关键字时,B-树的最大高度为l-1(因为计算B-树高度时,叶结点所在层不计算在内)
即:log┌m/2┐((N+1)/2 )+1。
这个公式保证了B-树的查找效率是相当高的。

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

B树的插入、删除参考http://blog.csdn.net/hijiankang/article/details/9166451
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值