B树学习小结

B树的基本知识

1、B树的定义

对于m阶-B树,其指的是某个结点最多包含m-1个关键码,每个结点的子分支最多有m个。对于除了各节点以外的所有结点,每个结点所具有的内部关键码个数的取值范围为 [ ⌈ m / 2 ⌉ − 1 , m − 1 ] [\lceil m/2\rceil-1,m-1] [m/21,m1]。具有N个关键码的m阶B树的高度H的取值范围为 [ l o g m ( N + 1 ) , l o g ⌈ m / 2 ⌉ ⌊ ( N + 1 ) / 2 ⌋ + 1 ] [log_m(N+1),log_{\lceil m/2\rceil}\lfloor(N+1)/2\rfloor+1] [logm(N+1),logm/2(N+1)/2+1]

2、B树的应用

B树特别适用于内存较小的大规模数据集范问问题,整个B树均存储在外存中,对数据访问的主要耗时都花在了访问外存上,而B树中每一个结点内部的关键码在外存中是连续存储的,因此可以一次装入的内存当中,而查找某一个数据时,访问外存的次数就等于需要把外存中的结点装载到内存中的次数,因此对于m阶B树而言其查找的时间复杂度为 Ω ( l o g m N ) Ω(log_m^N) Ω(logmN),而对于二叉树而言其查找的时间复杂度为 Ω ( l o g 2 N ) Ω(log_2^N) Ω(log2N),m阶B树使得查找的复杂度降低为原来的 1 / l o g 2 m {1}/{log_2^m} 1/log2m。m通常取值为256~1024,因此大致使得查找的复杂度降低了一个数量级级别。

3、B树的相关操作

不同的操作还要根据操作完之后的情况对B树进行调整,因此为了思路上的连贯性这里采用流程图进行表示(ps:第一次用Markdown画流程图orz)

3.1 B树的插入操作

插入关键码 X X X

存在
不存在
上溢
无上溢传递
上溢传递
到达根结点
无上溢
查找X在B树中是否存在
插入失败
结束
找到最终的叶节点,将该结点插入到对应的叶节点中
对于上溢的结点从中间进行分裂
,将分裂的轴点加入到父节点中
继续调整叶子结点
分裂当前结点取轴点作为根结点
3.2 B树的删除操作

删除关键码 X X X

不 存在
存在
下溢
无下溢传递
下溢传递
查找X在B树中是否存在
插入失败
结束
找到对应的叶节点,将该关键码与其直接后继v进行位置交换然后删除关键码v
对于下溢的结点分析其父节点的另一个子树,根据另一个子树的情况决定采用哪种解决方法
采用抽取该结点的父节点的另一个孩子结点中关键码的方法
采用合并的方法
继续调整父节点指导达到根结点
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值