高级搜索树 B-树

一、动因

                    主要用于弥合不同存储级别之间访问速度上的差异,实现高效的I/O,由于存储器的容量越大速度却越慢,为使内存运行更快,容量越来越小,往往采用分级I/O实现。B-树形态上下窄,左右宽,层数较小,适合外存访问,开销小。

二、结构

 

 

  • 一、定义

    B树是一种平衡的多分树,通常我们说m阶的B树,它必须满足如下条件:
    (1)每个结点至多有m个子结点;
    (2)除根结点和叶结点外,其它每个结点至少有ceil(m/2)个子结点;
    (3)根结点至少有两个子结点;(唯一例外的是根结点就是叶子结点)
    (4)所有的叶结点在同一层;
    (5)有k个子结点的非根结点恰好包含k-1个关键码,关键码按照递增次序进行排列。

    ceil代表向上取整

    二、查找

    B-树的查找很简单,是二叉排序树的扩展,二叉排序树是二路查找,B-树是多路查找,因为B-树结点内的关键字是有序的,在结点内进行查找时除了顺序查找外,还可以用折半查找来提升效率。B-树的具体查找步骤如下(假设查找的关键字为key):

    (1)先让key与根结点中的关键字比较,如果key等于k[i](k[]为结点内的关键字数组),则查找成功;

    三、插入

    以一个3阶的B树为例:

    (1)如果该结点的关键字个数没有到达2个,那么直接插入即可;
    (2)如果该结点的关键字个数已经到达了2个,那么根据B树的性质显然无法满足,需要将其进行分裂

    分裂的规则是该结点分成两半,将中间的关键字进行提升,加入到父亲结点中,但是这又可能存在父亲结点也满员的情况,则不得不向上进行回溯,甚至是要对根结点进行分裂,那么整棵树都加了一层。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值