数据结构与算法 B树

关于二叉树、二叉搜索树、平衡二叉树、B树、B+树的精确定义和区别探究参考博客

关于二叉树、二叉搜索树、平衡二叉树、B树、B+树的精确定义和区别探究
https://www.cnblogs.com/williamjie/p/11081096.html

1、在了解红黑树之前,可以先来了解B树,对于红黑树的理解将会更加好一些;

2、B树的特点

B树是一种平衡的多路搜索树,多数使用在了文件系统,数据库的实现
B树的特点:
1、一个结点可以存储的结点有多个
2、拥有二叉搜索树的性质
3、是平衡的,每个结点的所有子树高度都是一致的
4、高度低一些
在这里插入图片描述

在这里插入图片描述

3、为什么叫做 B 树?

1、balance tree 它是非常的平衡的(平衡是表现在树的高度上面的)

4、几阶B 树的相关定义

树里面拥有的最多子节点的数目,就是叫做 几阶 B 树,如上面的图所示;(体现在拥有最多子节点数目的节点上面)

5、 m 阶B 树的定义

在这里插入图片描述

当 m = 2 的时候,就是二叉搜索树,一般情况下,是不会使用 m = 2 的;

6、B树和二叉搜索树之间的联系

把二叉搜索树的部分父子结点合并之后,就可以形成一颗m 阶B树
在这里插入图片描述

在这里插入图片描述

关于最下面的对数问题: m 指的是 m 代合并之后,拥有的子节点的数量;简单的对数计算

四阶B树的意思就是某个结点最多拥有四个子节点

7、使用 B 树完成搜索

在这里插入图片描述

8、使用 B 树完成添加

在这里插入图片描述
添加的元素一定添加到叶子结点的位置的;
在这里插入图片描述

8.1、上溢现象的产生

在这里插入图片描述

4 阶B 树,最大的子节点不能超过 3 个元素,此时是存在问题的;

8.2、**添加的元素必定是添加到叶子结点中

9、上溢现象的解决

在这里插入图片描述

上溢,像上面传递,然后裂开,一直到不上溢为止;

在这里插入图片描述

10、删除操作

10.1、删除叶子结点

在这里插入图片描述

10.2、删除非叶子结点

不能随意的直接删除 60 因为 B树 需要满足的是:上面和下面的元素之间的差距不能超过一,所以找到它的前驱或者后继元素进行元素的覆盖即可;

前驱结点:左子树的最右边
后继节点:右子树的最左边

在这里插入图片描述

10.3、小结 **真正的删除元素是叶子结点的元素的删除

11、删除续集 - 下溢的处理

5 阶B树每个节点中至少存在 2 的元素,最多存在 4 个元素,删除了 22 会导致存在的最少元素不存在,所以需要处理;

m 表示的是树的阶数 ,也就是树种的某个节点拥有的最多的子节点的数目
在这里插入图片描述
比最低的限制低了,会导致不满足 5 阶B树的相关定义;

在这里插入图片描述
为什么一定是等于ceil(m / 2) - 2?
因为最小就是 ceil( m / 2) - 1,比最小的小就发生下溢了,这个时候就是需要进行处理的;

在这里插入图片描述

几点小 tips :
1、为什么不能直接把 a 放在了 b 的位置?
因为直接放过去会影响到了二叉搜索树的结构,所以采取了这样的一种旋转的策略,保证了搜索树的结构的存在;

如果旁边的兄弟也是没有东西可以借给右边的时候,应该怎么进行处理呢?看下面的处理方式,上面去一个元素,并且与下面的元素进行合并;
在这里插入图片描述

11.1、小结

一个结点发生了下溢之后,首先向旁边的兄弟借元素;旁边也没有,向着父节点要一个,然后三个进行合并成为一个结点,这个设计刚刚好,节点里面的元素也是不会超过的;父节点也发生下溢的话,继续向着上面的元素要一个,然后合并;

12 上溢是让 B树唯一变高的方式;下溢是唯一变低的方式;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值