【恋上数据结构与算法 第一季】B树 B-Tree


持续学习&持续更新中…

学习态度:守破离


本节课学习B树是给红黑树打基础,不敲代码。

基本概念

  • B树是一颗平衡的多叉树(平衡的多路搜索树)

  • // B树之所以叫做B树的原因,有一种说法是:Balanced Tree(非常平衡)

  • B树拥有二叉搜索树的一些性质:小的在左边,大的在右边。

在这里插入图片描述

m阶B树的性质

  • m阶的意思是:一个节点最多拥有m个子节点

  • m >= 2 (至少是二阶)

在这里插入图片描述

  • 思考:为什么要求节点存储元素的个数 <= m-1

y(某节点的子节点个数) = x(某节点存储的元素个数) + 1

在这里插入图片描述

B树和二叉搜索树

给你一颗二叉搜索树,将某些父子节点进行合并的话,就能变为一颗B树。

在这里插入图片描述

在这里插入图片描述

超级节点:能够存储多个元素的节点。

  • 将二叉搜索树2代合并:

在这里插入图片描述

也可以这样合并:

在这里插入图片描述

  • 将二叉搜索树3代合并:

在这里插入图片描述

搜索(查询)

在这里插入图片描述

添加

新添加的元素必定是添加到叶子节点当中的

在这里插入图片描述

在这里插入图片描述

添加—上溢

上溢到根节点是唯一一种能让B树长高的方法。

在这里插入图片描述

删除

真正被删除的元素都是在叶子节点当中

删除叶子结点

在这里插入图片描述

删除非叶子结点

在这里插入图片描述

删除—下溢

下溢到根节点是唯一一种能让B树变矮的方法。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四阶B树

作业:将四阶B树从1添加到22、从1删除到22

在这里插入图片描述

作业——添加

新添加的元素必定是添加到叶子节点中

分析:

  • 四阶B树根节点存储元素个数为1 <= m <= 3
  • 四阶B树非根节点存储元素个数为1 <= m <= 3
  • 四阶B树根节点拥有子节点个数为2 <= y <= 4
  • 四阶B树非根节点拥有子节点个数为2 <= y <= 4

综上:四阶B树每个节点都可存储[1, 3]个元素,每个节点都可拥有[2, 4]个子节点

添加1:

在这里插入图片描述

添加2:

在这里插入图片描述

添加3:

在这里插入图片描述

添加4:

在这里插入图片描述

在这里插入图片描述

添加5:

在这里插入图片描述

添加6:

在这里插入图片描述

在这里插入图片描述

添加7:

在这里插入图片描述

添加8:

在这里插入图片描述

在这里插入图片描述

添加9:

在这里插入图片描述

添加10:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

添加11:

在这里插入图片描述

添加12:

在这里插入图片描述

在这里插入图片描述
添加13:

在这里插入图片描述

添加14:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

添加15:

在这里插入图片描述

添加16:

在这里插入图片描述
在这里插入图片描述

添加17:

在这里插入图片描述

添加18:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

添加19:

在这里插入图片描述

添加20:

在这里插入图片描述
在这里插入图片描述

添加21:

在这里插入图片描述

添加22:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

作业——删除

真正的删除都发生在叶子节点中

分析:

① 删除操作:

  • 删除叶子节点:直接删除

  • 删除非叶子节点:找到该节点的前驱或后继节点node,用node的值来覆盖需要删除节点的值,然后删除node(相当于删除叶子节点,因为非叶子节点的前驱或后继元素,必定在叶子节点中

② 下溢:当叶子节点删除掉一个元素后,元素个数低于最低限制(ceiling(m 除以 2) - 1)时,这种现行成为下溢

  • 如果下溢节点临近的兄弟节点有至少ceiling(m 除以 2) 个元素,那么使用如下操作:

在这里插入图片描述

  • 如果下溢节点临近的兄弟节点有至少ceiling(m 除以 2 - 1) 个元素,那么使用如下操作:

在这里插入图片描述

删除1:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

删除2:

在这里插入图片描述

删除3:

在这里插入图片描述

在这里插入图片描述

删除4:

在这里插入图片描述

删除5:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

删除6:

在这里插入图片描述

删除7:

在这里插入图片描述
在这里插入图片描述

删除8:

在这里插入图片描述

删除9:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

删除10:

在这里插入图片描述

删除11:

在这里插入图片描述
在这里插入图片描述

删除12:

在这里插入图片描述

删除13:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

删除14:

在这里插入图片描述

删除15:

在这里插入图片描述

在这里插入图片描述

删除16:

在这里插入图片描述

删除17:

在这里插入图片描述

在这里插入图片描述

删除18:

在这里插入图片描述

删除19:

在这里插入图片描述

在这里插入图片描述

删除20:

在这里插入图片描述

在这里插入图片描述

删除21:

在这里插入图片描述

删除22:

在这里插入图片描述

参考

小码哥李明杰老师课程: 恋上数据结构与算法 第一季.


本文完,感谢您的关注支持!


Guess you like

Origin blog.csdn.net/weixin_44018671/article/details/120616845