B树学习笔记之B树的删除

B树的下溢发生于删除关键码后违反了B树的性质 。

《B树学习笔记之B树的删除》

一. 旋转

  • 如果左右兄弟存在,则间接向左右兄弟借关键码

    《B树学习笔记之B树的删除》

二. 合并

《B树学习笔记之B树的删除》

B树高度的减少只会发生于根节点的两个孩子合并 。

三. 实例

《B树学习笔记之B树的删除》

1. 删除249

《B树学习笔记之B树的删除》

不急于合并,先左顾右盼,向有兄弟接一个关键码。

《B树学习笔记之B树的删除》

删除操作顺利结束。

2. 删除619

《B树学习笔记之B树的删除》

664没有左兄弟,右兄弟处于即将下溢的边缘临界状态,旋转技巧已不适用,选择合并。

《B树学习笔记之B树的删除》

此时,父节点发生了下溢,继续合并。

《B树学习笔记之B树的删除》

整棵B树的高度降低了一层,这时B树高度得以下降的唯一可能。

四. 总结

B树被设计成相对矮宽,而对B树的访问是由一系列的外存操作内存操作交替组成的。有多少外存操作,就有多少内存操作。但要使外存操作的代价与内存操作的代价大致相当。B树能做到,而AVL与BBST却做不到

  • 水平方向:对应与每个节点的内部搜索,在内存(RAM)中进行。
  • 垂直方向:对应于磁盘(Disk)操作。树中每下降一层,就要付出一次IO操作的代价。

《B树学习笔记之B树的删除》

    原文作者:B树
    原文地址: https://blog.csdn.net/wydyd110/article/details/80097201
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞