数据结构(8)树形结构——B树、B+树(含完整建树过程)
创始人
2024-03-13 07:57:21
0

目录

8.1.B树

8.1.1.概述

8.1.2.完整建树过程

8.2.B+树


8.1.B树

8.1.1.概述

B树存在的意义:

二叉树在存储数据时可能出现向一边倾斜导致查询效率降低的情况,为了防止二叉树的倾斜,出现了平衡二叉树,通过旋转的方式保证二叉树的平衡。但是就算是保持绝对的平衡,在面对要存储的数量量级够大的时候也会出现树的高度整体偏高的问题,树的高度过高,即使是使用了二分查找,依然会出现查找效率变低的情况。尤其是磁盘查找数据本身是个机械完成的动作,这一动作本身就十分耗时。因此需要一种能进行二分查找缩短查找时间,能存储大量数据后树高也不会过高的树形结构,这就是B树。

B树的概念:

B树又称为多路平衡查找树,满足以下规则:

  • 基本结构
    • 每个结点可以存放多个数据,每个结点的数据实体处理存放数据外有左右指针指向自己的子结点,也就是说当前结点存放n个数据的话,它最多能有n-1个指针指向自己的子结点。
  • B树的阶数
    • 阶数,代表单个节点最多有多少个查找路径,也就是单结点的指针数量,当阶数=2时,这棵B树就是二叉树。
  • 排序方式
    • 单结点内部按照升序排列。结点之间,左结点<根结点<右结点
  • 子结点数
    • 非叶节点的子节点数>1,且<=M ,且M>=2,空树除外
  • 单结点的数据存放上限
    • 大于等于ceil(阶数/2)-1个且小于等于阶数-1个,ceil()是个朝正无穷方向取整的函数 如ceil(1.1)结果为2。

以下展示一个B树的示例,省略号表示为了节约作图空间没画出来但是存在的结点:

B树的缺点:

不适合范围查找,例如我们要查找上面这棵B树里>5的数据,那么要在找到15后还要继续查找30右边的指针,40右边的指针......可以看到需要进行很繁复的遍历。

8.1.2.完整建树过程

3、8、31、11、23、29、50、28  构建一个5阶B树。

5阶B树,因此每个节点有4个关键字,5个分支。

8.2.B+树

因为B树对范围查询效果不好,于是出现了对于范围查询有较好支持的B+树。

B+树其实就是专门为了更好的支持范围查询,微调了一下B树的结构。

思路:

  • 每个分支的叶子结点上挂载这路分支上的所有数据。
  • 这样可以保证树的最后一层上有整棵树的所有数据,并且在叶子结点层级上会呈现出数据均匀分块的效果。
  • 将叶子结点用双向指针连起来(图中有误)。
  • 这样进行范围查找的时候直接走到叶子结点层,然后在沿着指针查找即可。优化了B树的范围查找能力。

可以看到B树和B+树各有优缺:

存放同样的数据,B树的内存开销要低于B+树,因为B+树在叶结点挂了路径上的所有数据,相当于把数据存了两份。但是B+树的范围查询效率更好。

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...