(B树、B+树和B*树)多路查找树详解

B-树、B+树、B*树的区别 1、二叉搜索树        性质:所有非叶子结点至多拥有两个儿子(Left和Right);每个结点存储一个关键字;非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树。     搜索:从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应 阅读详情

1.二叉树与B树

1.1二叉树的问题分析
二叉树的操作效率较高,但是也存在问题,请看下面的二叉树:
在这里插入图片描述
(1)二叉树需要加载到内存的,如果二叉树的节点少,没什么问题,但是如果二叉树的节点很多(比如1亿),就存在以下问题:
(2)问题1:再构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海里,构建二叉树时,速度有影响
(3)问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度
1.2多叉树
(1)再二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树
(2)比如2-3树(一个节点最多有三个子节点),2-3-4树(一个节点最多有四个子节点)就是多叉树,多叉树通过重新组织节点,减少树的高度,能对二叉树进行优化。
(3)下面就是一颗2-3树:
在这里插入图片描述
1.3B树的基本介绍
B树通过重新组织节点,降低树的高度,并且减少i/o读写次数来提升效率。
在这里插入图片描述
(1)如上图B树通过重新组织节点,降低了树的高度
(2)文件及数据库系统的设计者利用了磁盘预读原理,将一个节点的大小设为等于一个页(页得大小通常为4k),这样每个节点只需要一次i/o就可以完全载入了
(3)将树的度(就是一个节点拥有最多子节点的个数)设置为1024,在600亿个元素中最多只需要4次i/o操作就可以读取想要的元素,B树(B+)广泛应用于文件存储系统以及数据库系统中。

2. 2-3树

2.1 2-3树是最为简单的B树,具有以下特点:
(1)2-3树的所有叶子节点都在同一层(只要是B树都满足这个条件)
(2)有两个子节点的节点叫做二节点,二节点要么没有子节点,要么有两个子节点
(3)有三个子节点的节点叫三节点,三节点要么没有子节点,要么有三个子节点
(4)2-3树是由二节点和三节点构成的树

2.2 2-3树应用案例

将数列{16,24,12,32,14,26,34,10,8,28,38,20}构建成2-3树,并保证数据插入的大小顺序,如下图:
在这里插入图片描述
插入规则:
(1)2-3树的所有叶子节点都在同一层(只要是B树都满足这个条件)。
(2)有两个子节点的节点叫二节点,二节点要么没有子节点,要么有两个子节点。
(3)有三个子节点的节点叫做三节点,三节点要么没有子节点,要么有三个子节点
(4)当按照规则插入一个数到某个节点时,不能满足上面三个要求,就需要拆,先向上拆,如果上层满了,则拆本层,拆后仍然需要满足上面3个条件
(5)对于三节点的子树的值大小仍然遵循(BST二叉排序树)的规则

3.B数

3.1B树的介绍
B-tree树即B树,B即Balanced,平衡的意思。有人把B-tree翻译成B-树,容易让人产生误会。会以为B-树是一种树,而B树又是另一种树。实际上,B-tree就是指B树。
前面已经介绍了2-3树和2-3-4树,他们就是B树(英语:B-tree也写成B-树),这里再做一个说明,我们在学习Mysql时,经常听说到某种类型的索引是基于B树或者B+树的,如下图:
在这里插入图片描述
对上图的说明:
(1)B树的阶;节点的最多子节点个数。比如2-3树的阶是3,2-3-4树的阶是4
(2)B-树的搜索,从根节点开始,对节点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点。重复,知道对对应的儿子指针为空,或已经是叶子结点。
(3)关键字集合分布在整棵树中,即叶子节点和非叶子节点都存放数据。
(4)搜索有可能在非叶子结点结束
(5)其搜索性能等价在关键字全集内做一次二分查找

4.B+树的介绍

B+树是B树的变体,也是一种多路搜索树
在这里插入图片描述
对上图的说明:
(1)B+树的搜索与B树也基本相同,区别是B+树只有达到叶子节点才命中(B树可以在非叶子节点命中),其性能也等价于在关键字全集做一次二分查找。
(2)所有关键字都出现在叶子节点的链表中,而且链表中的关键字是有序的
(3)不可能在非叶子结点命中
(4)非叶子节点相当于是叶子节点的索引,叶子节点相当于是存储数据的数据层
(5)更适合文件索引系统
(6)B树和B+树各有自己的应用场景,不能说B+树完全比B数好,反之亦然

5.B*数的介绍

B数是B+数的变体,在B+数的非根和非叶子节点在增加指向兄弟的指针
在这里插入图片描述
B
数的说明:
(1)B*数定义了非叶子节点关键字个数至少为(2/3)M,即块的最低使用率为2/3,而B+数的块的最低使用率为1/2
(2)从第一个特点我们可以看出,B
数分配新节点的概率比B+数要低,空间使用率更高

【数据结构】B树家族详解:B树、B+树、B* B+Tree 是 B 树的一种变形,每个节点包含多个键值对和指向子节点的指针。与 B 树不同,B+Tree 所有数据记录都存放在叶子节点,且叶子节点之间通过双向链表连接。非叶子节点仅作为索引,存放键值和指向子节点的指针,这些键值是对应子节点中键值的最大值或最小值。例如在一个简单的 B+Tree 中,非叶子节点可能存储着 10、20、30 这些键值,分别指向包含小于 10、10 到 20、20 到 30 这些数据范围的子节点。B树是 B+ 树的一种变体,在B+树的非根和非叶子结点再增加指向兄弟的指针。 阅读详情

相关推荐

总结整理:从B树、B+树、B*树谈到R 树

最近学习高级数据库技术,涉及到很多的数据结构如B+树,R树,因此想系统的整理一下从B树、B+树、B*树谈到R 树,网上查阅了一些资料进行了整理。 下面有关内容部分转自:http://blog.youkuaiyun.com/v_JULY_v/article/details/6530142   其中,我认为第一篇文章说到的B+树的定义是有问题的,B+树的有n棵子树的结点中含有n个关键字,应该是含有n-1个关键

狂奔的蜗牛 3030

高级数据结构——B*算法(Branch Star)

算法原理 前置定义: 探索节点: 为了叙述方便,我们定义在寻路过程中向前探索的节点(地图格子)称为探索节点,起始探索节点即为原点。(探索节点可以对应为A*中的开放节点) 自由的探索节点: 探索节点朝着目标前进,如果前方不是阻挡,探索节点可以继续向前进入下一个地图格子,这种探索节点我们称为自由探索节点; 绕爬的探索节点: 探索节点朝着目标前进,如果前方是阻挡,探索节点将试图绕过阻挡,绕行...

菜鸡工坊 9419

嵌入式开发实战:LWIP中PPP协议配置全流程(含CHAP认证避坑指南)

本文是一份嵌入式开发实战指南,详细解析了如何在STM32平台上配置LWIP协议栈中的PPP协议,实现从串口到IP网络的完整连接。内容涵盖工程搭建、源码整合、关键配置、串口驱动绑定、状态管理以及CHAP认证等核心流程,并重点提供了CHAP认证失败的排查与避坑指南,帮助开发者高效打通嵌入式设备的网络连接。

plant的博客 464

MySQL索引-B+树

索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。 索引在 MySQL 数据库中分三类: B+ 树索引 Hash 索引 全文索引 我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引。要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据结构。

jmlqqs的博客 1530

基因的富集分析

通过RNA_seq差异表达分析等获得一组基因,想要进一步了解这些基因可能参与哪些生物学过程,具有哪些功能,一般就会用到基因的富集分析了。现在小麦基因注释信息已经可以获得,目前来看包括两套。一个是TGACv1,另一个就是IWGSC1.0。需要用到一个叫“clusterProfiler”的R包。下面用到的数据集来自TGACv1。1、安装source("https://bioconductor.org/b

xxxxx 1万+

PaddleOCR SVTRv2中文识别模型训练全流程:从数据准备到推理部署

本文详细介绍了基于PaddleOCR的SVTRv2中文识别模型从数据准备、模型训练到推理部署的全流程实战。SVTRv2凭借其单视觉Transformer架构和分层混合机制,在中文文字识别任务上实现了高精度与效率的平衡。文章重点解析了数据工程、训练调优技巧及部署优化方案,帮助开发者构建定制化的OCR解决方案。

weixin_29194817的博客 287

图解:什么是B-树、B+树、B*树

文章目录 1.二叉搜索树 在说B树之前,我们需要先了解一下二叉搜索树 二叉搜索树,顾名思义,是用来搜索的有序树 它具有以下特点: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树。 下边这个就是一棵二叉搜索树 1.1 二叉搜索树的查找 二叉搜索树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中 否则,如果查询关键字比结点关键字小,就进入左儿子 如果比结点关键字大,就进

你好戴先生的博客 3117

【26美赛C题】Data With The Stars第三问[影响因素分析模型]思路与代码

本文针对2026美赛C题《Dancing with the Stars》第二问,提出了一套系统的影响因素分析框架。通过多元回归模型和固定效应模型,量化分析了明星特征(年龄、职业等)、舞者搭档和比赛周次对评分的影响,发现评委与观众偏好存在差异。研究采用方差分解评估舞者效应占比,通过最优年龄分析和交互效应检验揭示非线性关系。最后运用差异性检验和结构方程模型(SEM)比较评委与观众偏好,为比赛结果预测和选手优化提供量化依据。该分析框架可系统揭示比赛成绩的关键驱动因素。

一键难忘的博客 757

B树、B-树、B+树、B*树介绍

B树、B-树、B+树、B*树之间的关系B树B+树B*树 B树 B-树就是B树(可能有部分人会习惯上把B-树读为B减树,其实并不存在B减树,只是读法上的不同而已),B就是balanced,平衡的意思。B-树就是指的B树,特此说明一下。 先介绍一下二叉搜索树。 顾名思义,二叉搜索树,即指最多拥有两个叉,这里的叉即为所有非叶子结点的儿子(Lift和Right); 所有的结点存储一个关键字; 非叶子结点...

A_zhangq的博客 2万+

2026年软考高级网络规划设计师备考指南

在国家网络安全法律法规和政策的指导下,能够依据网络技术发展的趋势进行计算机网络领域的需求分析、规划设计、部署实施、评测、运行维护等工作。 在需求分析阶段,写出网络系统需求规格说明书;在规划设计阶段,完成逻辑结构设计、物理结构设计,选用适宜的网络设备,按照标准规范编写系统设计文档及项目开发计划;在部署实施阶段,组织项目施工,对项目实施过程进行质量控制、进度控制、成本管理,能具体指导项目实施;在评测运维阶段,能根据相关标准和规范对网络进行评估测试,能制定运行维护、故障分析与处理机制,确保网络提供正常服务;

鹿鸣天涯 1万+

c语言实现求一个矩阵特征值和特征向量

前言 求矩阵的特征值,主要是用的QR分解,在我的有一次博客里,我已经详细地给出了计算的过程,大家有兴趣可以去看下,经过几天的钻研,终于完成了整个的eig算法。下面我将把我的整个代码附上,有不懂的可以问我,欢迎一起讨论学习! 这是对上一次的修改版,上一次写的程序是在C++编译环境下编译的,所以放在c里面编译有些会出错。 最后,如果有不对的地方希望大...

qq_36417014的博客 2万+

关于B树 B+树 B*树以及红黑树的理解

1、首先要明白为什么有了AVL树之后还会出现这么多树的变种? 可以参考这个知乎有关几种树的应用的回答: 作者:王伟豪 链接:https://www.zhihu.com/question/30527705/answer/52919336 来源:知乎 AVL树:平衡二叉树,一般是用平衡因子差值决定并通过旋转来实现,左右子树树高差不超过1,那么和红黑树比较它是严格的平衡二叉树,平衡条件非常严格(树...

herr_kun的博客 3万+

Trae中配置和使用MCP 服务保姆级教程

您好,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧和经验,有兴趣的可以关注我的公众号,一起学习,共同进步。从21号开始,Trae开始陆陆续续的灰度推送了一次新版本,有的用户是21号收到的更新,有的用户是22号收到的更新,本次更新我愿称之为王炸级更新,具体更新内容可以去看我的上一篇文章。本次更新其中的一个内容就是支持了MCP 服务,那么什么是MCP呢,它的全称是。

cpp加油站的专栏 8209

详解B树、B+树、B*树

B树、B+树、B*树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B±tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率。...

春来桃花开的博客 2991

RK AVS双目融合记录

NOTE] 调试平台双目avs融合调试,需要先保证两个摄像头能正常出图同时出流。使用默认工具测试vi->avs->venc通路是否正常,-a可指定isp效果文件需要开启CONFIG_VIDEO_ROCKCHIP_AVSP和CONFIG_VIDEO_ROCKCHIP_FEC,dts中使能。

mangofu的博客 105

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

什么是B-树、B树、B+树、B*树?

文件系统的灵魂数据结构 B树什么是B-树、B树、B+树、B*树? 正如标题所言,本文介绍经常使我们混淆的B-树、B树、B+树和B*树。 首先,B-tree树即B树。B即Balanced平衡,因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,这是个非常不好的直译,很容易让人产生误解,人们可能会以为B-树和B树是两种树。 1、B树 1.1、B树产生的背景 不管是二叉树、二叉查找树还是平衡二叉树,它们都有诸多限制,比如: 每个结点只能存储一个元素。 ..

学无止境! 2470

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

从B树、B+树、B*树谈到R 树

从B 树、B+ 树、B* 树谈到R 树   作者:July、weedge、Frankie。编程艺术室出品。 说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。 出处:http://blog.youkuaiyun.com/v_JULY_v 。   第一节、B树、B+树、B*...

结构之法 算法之道 66万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【算法】- 查找 - 多路查找树(B树)

上次我们学了如何用平衡二叉树来插入和查找。这些算法都是在内存中进行,若我们要操作的数据非常大,大到内存没办法处理,这时我们就需要访问在外部的存储设备中的数据,在每次访问外部数据是都是需要消耗一定的时间,所以我们应该减少访问外部次数,这样效率就会提高,这时也就可以采用B树的结构对数据进行访问。这里我们主讲2-3树B树的应用,在内外存交换数据次数频繁,这就可以利用B树来增加效率。

2302_77182146的博客 1796

多叉树、多路查找树、B树、B+树、B*树介绍

What 在二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway tree) 后面会讲到2-3树(如图2)、2-3-4树、B树、B+树,他们都是多叉树 图1.二叉树 图2.多叉树(2-3树) Why 二叉树的操作效率较高,但是也存在问题 由于构建二叉树时需要把数据从某个地方(数...

c梦的博客 2775

大话数据结构—多路查找树(B树)

多路查找树(muitl-way search tree),其每一个节点的孩子数可以多于两个,且每一个节点处可以存储多个元素。主要有4中特殊形式。一、2-3树定义:其中的每一个节点都具有两个孩子(称为2节点)或者三个孩子(称为3节点)。 并且2-3树中所有的叶子都在同一层上。一个2节点包含一个元素和两个孩子(或者没有孩子)。一个3节点包含一小一大两个元素和三个孩子(或者没有孩子)。 1. 2-3树

小地盘的诺克萨斯 6525

【转】从B 树、B+ 树、B* 树谈到R 树

从B 树、B+ 树、B* 树谈到R 树   作者:July、weedge、Frankie。编程艺术室出品。 说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。 出处:http://blog.youkuaiyun.com/v_JULY_v 。   第一节、B树、...

柏拉图工作室-AI学科 1万+

数据结构(三)、B树,B+树,B*树

动态查找树主要有:二叉查找树,平衡二叉树,红黑树,B-tree/B+-tree/B*-tree。前三个都是典型的二叉树结构,查找的时间复杂度O(log2N)和树的深度相关,随着树的深度降低会提高查找效率。而在现实情况中大部分数据存储在磁盘中,对于数据量比较大的情况下,对导致二叉树结构的深度也随之变大造成磁盘IO读写频繁导致查询效率低下,因此大部分关系型数据库都使用本篇要介绍的B+Tree结构,要理解B+树,需要先理解B树,本篇也会一起介绍B*树。

王义凯 的博客 4141

B树,B+树,B*树以及R树的介绍

从B 树、B+ 树、B* 树谈到R 树   作者:July、weedge、Frankie。编程艺术室出品。 说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。 出处:http://blog.youkuaiyun.com/v_JULY_v 。   第一节、B树、B+树、B*

peterchan88的专栏 6752

B树、B+树和B*树

多路查找树 二叉树的操作效率较高,但是也存在问题 二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如 1 亿), 就存在如下问题: 问题 1:在构建二叉树时,需要多次进行 i/o 操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响 问题 2:节点海量,也会造成二叉树的高度很大,会降低操作速度. 多叉树 在二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway tree) 2

多思考🤔~ 543

B树 B+树 B*树的区别和适用场合

一、B树 1、B树的特性 一棵m阶的B树的满足条件: (1)每个节点至多有m棵子树 (2)根节点除外,其它每个分支节点至少有【m/2】棵子树 (3)根节点至少有两棵子树(除非B树只包含一个节点) (4)所有叶子节点在同一层上,B树的叶子节点可以看成一种外部节点,不包含任何信息。 (5)有j个孩子的非叶结点恰好有j-1个关键码,关键码按递增次序排列。 B 树又叫平衡多路查找树。如图: 2、B树的使用场景 B树多用于做文件系统的索引。 那么问题来了:为什么要用B树,红黑树不是就挺好的么? 原因: B树和二叉

jinking01的专栏 2680
上一篇: 平衡二叉树(AVL)树详解
下一篇: KMP算法详解
suixinghero
博客等级 码龄7年 10粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值