图解B+树并和B-树特点对比总结

文章中B+树插入删除部分转自:https://yq.aliyun.com/articles/9280

B+树和B-树总结:

B+ 树是B-树的变体,也是一种多路搜索树

B+树与B-树相同点在于:

1. 对于一颗M阶B+和B-树来说,根节点的分支数范围为[2,m],非根结点的分支数范围为[m/2(向上取整),m]

2. 所有叶子结点都在同一层

3. 插入操作都是在叶子结点完成(破坏结构后再向上调整)

B+ 树与B-树不同点在于:

1. B+树非叶子结点的字数指针与关键字个数相同;B-树所有结点的分支(指针)个数比关键字个数大1。(分支数都相同,关键字数B+ 树与分指数相同,B-树比分支数少1)

2. B+树非叶子结点的字数指针P[i],指向关键字值属于[k[i] , K[i+1] (k[i] , K[i+1]] 的子树(注意:B+树关键字区间是“一开一闭”);

    B-树都是开区间,因为结点内的关键字都不重复,所以不会出现一个区间闭合处的关键字,所以都是开区间,例:

    P[0]指向小于k[0]关键字的结点,p[1]指向大于k[0]小于k[1]关键字的结点,p[2]指向大于k[1]关键字的结点。(指针指向的结点不会包含上层关键 字)

3. B+树的所有关键字都在叶子结点出现;B-树的关键字可以在非叶子结点被找到。

4. B+树为所有叶子结点增加了一个链指针,将所有叶子结点用指针链穿起来。(稠密索引)


总结B+ 树和B- 树插入删除:

1. 都是在叶子结点进行插入,如果不破坏结构的话,直接插入;如果破坏结构,关键字多于规定时,进行结点拆分,在[m/2](向上取整)处拆分,拆分后再调整父节点到符合规定的状态

2. B+树删除都是在叶子结点进行,如果不破坏结构的话,直接删除;如果破坏结构,关键字少于规定时,先观察左右兄弟结点,若结点关键字数大于[m/2](即大于最小值),则可以借结点过来,并调整父节点到规定结构;若左右兄弟结点不可借,则进行结点合并,再修改父节点到规定结构。

  B-树杀出可能在叶子结点,可以在非叶子结点,在叶子结点和B+树类似,不满足结构时需要借关键字或合并结点;在非叶子结点时,需要找到他的相邻关键字进行替换,在删除叶子节点上的相邻关键字(上一篇B-树删除操作里说过)


B+树定义及插入删除操作图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值