55张图,一次让你心里有点B树

本文详细介绍了B树的数据结构,包括其特点、平衡性质、与2-3树的关系,以及B树的查找、添加和删除操作。B树是一种多路平衡搜索树,常用于数据库和文件系统,通过其特性减少磁盘IO,提高搜索性能。文章通过实例分析,帮助读者深入理解B树的工作原理。
摘要由CSDN通过智能技术生成

B树正式认识

首先纠正一个概念,有些人会说什么B树和B-树,这俩其实是一样的,都是B树就对了!

对于B树,它是一种自平衡的树,也就是平衡被破坏后需要进行操作重新达到平衡!学习这个B树之前,你需要了解:

  1. 二叉查找树

  2. AVL树

  3. 2-3树

当然,上述你不了解你也可以直接学习B树,只不过会更加费劲而已,了解了上述三种树之后再看B树,你就会觉得清晰很多!

首先B树和2-3更加相似一点,主要就是体现在不像之前咱们常见的那种二叉树,只有两个叉,也就是只有左右孩子,像2-3树就可以拥有三个孩子节点~

对于B树也是类似的,不是只有两个叉,可以有2个以上的子节点!

另外,对于B树这种数据结构,经常用在数据库和文件系统上

主要是因为B树每个节点可以存储多个数据以及可以有2个以上的子节点从而减少磁盘IO,进而提升搜索性能等!

总结起来一句话就是:

B树是一种多路的平衡搜索树

解读下这里的几个概念,首先什么是多路,其实简单,就是可以有多个叉,不仅仅是二叉树那样最多两个子节点,多路就可以有多个节点!

然后是平衡,这个就是会有一个平衡的条件,就是达到什么样才算平衡!

比如之前学习的AVL树就是左右字数高度差不大于1,一旦不满足平衡就要想办法让其平衡,这就是所谓的平衡树!

那搜索树呢?

记住核心就是比左边的大,比右边的小!

ok,关于什么是B树,我们通过文字叙述了一遍!那接下来我们画图来给大家直观的看下,B树长什么样子:

以上就是一棵3阶B树,那有人会不会说,有没有4阶B树?当然有,如下:

看到这个大家就可以大胆猜测一下,**这几个几阶B树是如何判断的?**可以想一下咱们之前讲解2-3树的时候提到的2-节点和3-节点!

说到这里,大家也可以思考下,这个B树和2-3树的区别~

对于2-3树,最多的就是3-节点可以拥有两个数据和三个子节点,但是我们看这个B树,是不是还可以一个节点拥有三个数据以及四个子节点,比如这个:

然后我们再看,这些节点保存的数据有什么特点?是不是依然是比左边的都大,比右边的都小?

有人可能疑惑,这一个节点存好多数据怎么比较,这个其实也简单,如果存多个数据,我们就拿最大和最小的数据去比较,比如这个:

最小的数据25是不是比左字数中所有的数据都大,然后再看:

最大的数据90是不是也要比右子树中的数据都小!那接下来稍微有点难比较的就是中间节点的比较,其实也很简单,我画个图:

该节点的三个数值分别是25,32和90,有三个数据,然后有四个子节点,最小的数据25一定是大于左子树中的所有数值(22和23)~

最大的数据90一定是小于右子树中所有的数值(100),那中间的俩节点数值26和33正好是处于25和32之间,以及32和90之间!

如果把它给压平了一定是从左至右,依次变大的,也就是这样:

所以,B树是拥有二叉查找树的性质的,并且这个大小关系和2-3树是一样的,这就是B树了,以后别人再问你心里有没有点……知道该怎么回答了吧!

B树的直观印象

接下来我们来看下B树一眼看上去,有啥特点,首先,还是上面给大家举例的这棵3阶B树:

就它,一眼看上去,有啥特点,首先想下2-3树,是不是和2-3树一样,绝对平衡,也就是每一个节点的所有子树高度都是一致的~

另外还有一个特点,就是B树是不是比较矮,如果上面这些数据存储到二叉树的话,一定是比较高的,就是细长细长的!

为什么在B树这里就比较矮?想必你也想到了,就是因为对于B树来说,它的一个节点可以存储多个数据,以及每个节点可以有多个子节点,所以B树一般比较矮,比较宽

对了,不知道大家看到这里会不会有这样一个疑惑:

为什么叫做B树啊,咋不是C树,D树?

有一种说是说这种树非常平衡,英文叫做Balanced Tree,这个Bal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值