B树、B-树、B+树

B树(BTree)与B+树(B+Tree) 类型3:X处于非终端结点,则用X的前驱或者后继关键字顶替X的位置,然后把对应的前驱和后继关键字删掉,变成删除终端结点的情况。 阅读详情

一,B树(Binary Search Tree)

B树即二叉搜索树,二叉排序树或者是空树,或者是满足如下性质的二叉树:

1,若它的左子树非空,则左子树上所有节点的关键字小于根节点的关键字。

2,若它的右子树非空,则右子树上所有节点的关键字大于根节点的关键字。

3,左、右子树本身又各是一颗二叉排序树。


二,B-树

1,B-树的定义

B-树称为多路平衡查找树,是一种组织和维护外存文件系统非常有效的数据结构。B-树是所有节点的平衡因子均为0的多路查找树。B-树中所有节点的孩子节点最大值称为B-树的阶,通常用m表示。一颗B-树或者是一颗空树,或是满足下面要求的m次树:

(1),叶节点:

所有的叶子节点在同一层,并且不带信息。(这里的叶节点就是NULL节点)

(2),根节点

根节点或者没有子树,或者至少有两棵子树。

(3),非叶节点的子树的个数

至少有m / 2棵子树,至多有m - 1棵子树。

(4),非叶节点包含的信息

包含所有的关键字及指向相关记录的指针。

B-树


2,B-树的查找

在B-树中查找指定关键字的方法类似于二叉排序树上的查找,不同的是在每个记录上确定向下查找的路径不一定是二路的,而是多路的。因为一个节点内的关键字的序列是有序的,在一个节点内查找关键字可以使用顺序查找与折半查找。在一棵B-树上查找关键字k的方法为:将k与根节点中的 ki 进行比较

(1),若 k = ki,查找成功。

(2),若 k < k1,顺着指针p0所指的子树继续查找。

(3),若 ki < k <ki+1, 顺着指针pi所指的子树继续查找。

(4),若 ki > kn,顺着指针pn所指的子树继续查找。


3,B-树的特性

(1),关键字集合分布在整棵树中。

(2),任何一个关键字出现且只出现在一个节点中。

(3),搜索有可能在非叶子节点结束。

(4),其搜索性能等价于在关键字全集内做一次二分查找。


三,B+树

1,B+树的定义

B+树是B-树的一种变体,也是一种多路搜索树。一棵m阶B+树满足下面这些条件:

(1),叶节点:

叶子节点包含全部关键字及指向相应记录的指针,而且叶子节点按关键字大小顺序链接。

(2),根节点:

根节点或者没有子树,或者至少有两棵子树。

(3),非叶节点的子树的个数

至少有m / 2棵子树,至多有m棵子树。

(4),非叶节点包含的信息

仅包含它的各个子节点中最大关键字及指向子节点的指针。

B+树


2,B+树的特性

(1),所有的关键字都出现在叶子节点的链表中,且链表中的关键字是有序的。

(2),不可能在非叶子节点命中。

(3),非叶子节点是叶子节点的索引,叶子节点相当于存储数据的数据层。

(4),更适合文件索引系统。


四,B-树与B+树之间的区别

1,叶节点

B-树:所有的叶子节点在同一层,并且不带信息。

B+树:叶子节点包含全部关键字及指向相应记录的指针。


2,非叶节点的关键字的个数

B-树:至少有m / 2 - 1个关键字,至多有m - 1个关键字。

B+树:至少有m / 2个关键字,至多有m个关键字。


3,非叶节点保存的信息

B-树:包含所有的关键字及指向相关记录的指针。

B+树:包含它的各个子节点中最大关键字及指向子节点的指针。


4,结构上的差别

B+树中所有的叶子节点都是通过指针链接在一起,而B-树不会这样做。


五,B-树与B+树各自的优点

1,B-树的优点

(1),对于在内部节点的数据,可以直接得到,不用根据叶子节点来定位。


2,B+树的优点:

(1),非叶节点不带有指向记录的指针,一个块中可能容纳更多的索引项。这样做一方面可以降低树的高度,另一方面可以定位更多的叶子节点。

B, B-, B+树的定义,特性,联系与区别(红黑树) B树的不同定义,有时B树即是B-树 为什么会有B树: 因为二叉树的查找平均时间是logN,是与二叉树的深度有关,所以为了减少二叉树的深度,增加查找速度,势必要增加树的叉树。如果该树是M叉的,M&gt;2的话,logm(N)势必要小于log2(N),所以当数据量非常大的时候,B树的平均查找时间要少于二叉树。 红黑树:带有平衡性的二叉搜索树增强版 红黑树是每个节点都带有颜色属性的二叉查找树,颜色... 阅读详情

相关推荐

为什么 MongoDB 索引选择B树,而 Mysql 选择B+树

前言 之前有人看了我的博客提出了这个问题,我懒省事让他自行百度,今天发现网上的答案很多,但是很啰嗦或者让人看不懂,所以就写下了这篇文章 一、B树和B+树的区别 很明显,我们要想弄清楚原因就要知道B树和B+树的区别。为了不长篇大论。我们直接给出他们的形式总结他们的特点。 1、B树 B树是一种自平衡的搜索树,形式很简单: 这就是一颗B树。针对我们这个问题的最核心的特点如下: (1)多路,非二叉树 (...

weixin_44508805的博客 1345

数据结构——B+树

B+树

weixin_52821814的博客 3万+

B树(也叫B-树)、B+树、B*树

0. 简介 在此声明,B-Tree最正确的翻译应该为B树,而不是B-树,也即并没有B-树的说法,二叉树叫Binary Tree,二叉搜索树叫Binary Search Tree(BST)B树叫Balance Tree,简写为B-Tree (注意是这两个单词连起来的意思,不是减号),B+树是B+ Tree。 1. BST(Binary Search Tree,即二叉搜索树,并不是B树) ...

吹雪的专栏 2094

经典树结构——B+树的原理及实现

文章目录B+树的概念B+树实现B+树节点参数B+树插入实现B+树删除实现 B+树的概念 规则: B+跟B树不同B+树的非叶子节点不保存关键字记录的指针,只进行数据索引,这样使得B+树每个非叶子节点所能保存的关键字大大增加 B+树叶子节点保存了父节点的所有关键字记录的指针,所有数据地址必须要到叶子节点才能获取到。所以每次数据查询的次数都一样 B+树叶子节点的关键字从小到大有序排列,左边结尾数据都会保存右边节点开始数据的指针 非叶子节点的子节点数=关键字数(来源百度百科)(Mysql 的B+树) B+树相比

c630843901的博客 5万+

算法——B树,B-树,B+树,B*树全面解析笔记

算法——B树,B-树,B+树,B*树全面解析笔记 https://zhuanlan.zhihu.com/p/54102723 https://www.cnblogs.com/lianzhilei/p/11250589.html B树 = B-树 B-树,即为B树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种树。而事实上是,B-tree就是指的B树,目前理解B的意思为平衡 B树的出现

轮回浮华三千的博客 1488

智驾域控制器硬件架构:从接口丛林到算力核心的工程解码

本文深入解析了智驾域控制器硬件架构的设计挑战与工程实践。面对复杂的接口丛林,文章详细探讨了如何高效融合摄像头、雷达等多源传感器数据,并构建以多SOC为核心的强大算力平台。同时,文章强调了电源、时钟、散热等最小系统及车规级可靠性设计的关键作用,为工程师提供了从接口驯服到算力核心协同的完整硬件解码指南。

happy2的博客 475

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

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

结构之法 算法之道 66万+

Elsevier投稿实战:从ESWA模板到录用通知的全流程拆解

本文详细拆解了Elsevier旗下期刊ESWA(Expert Systems With Applications)的投稿全流程,从模板选择、投稿系统操作到审稿意见回复和录用后注意事项。重点分享了单栏LaTeX模板调整、APA文献格式处理、Highlights撰写技巧等实战经验,帮助研究者高效完成投稿并提升录用概率。

weixin_32715349的博客 227

B树、B-树、B+树、B*树 详细总结

B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关...

杰哥一号号的博客 5407

硬件基础(4):(7)ADC电压采集:软件校准(标定、拟合)

在实际项目中,**软件端校准**可以有效弥补硬件方面(分压电阻误差、放大器失调、参考源误差等)带来的系统性偏差,从而提高 ADC 测量精度。下面是一个常见的**多点实测校准**流程与思路,个人感觉传感器标定的原理也只这样。

FCZlll的博客 6225

Ansys Circuit新手必看:IBIS模型导入时,Pin Import和Buffer Import到底怎么选?

本文详细解析了Ansys Circuit中IBIS模型导入时Pin Import与Buffer Import的选择策略,帮助SI/PI工程师根据仿真需求做出正确决策。通过对比两种方式的特性差异和应用场景,提供实用的选择指南和性能优化建议,提升信号完整性仿真效率。

weixin_26846533的博客 246

B树,B-树和B+树的区别

B树       即二叉搜索树:       1.所有非叶子结点至多拥有两个儿子(Left和Right);       2.所有结点存储一个关键字;       3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;       如:              B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入...

chensi16114的博客 2万+

frp内网穿透(socks隧道)

在实验过程中还是遇到了挺多的问题,但好在大多都解决了。不过还是遗留了一些不懂的问题,等以后再慢慢研究了。最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

2301_76227305的博客 1万+

B树,B-树和B+树、B*树的区别

之前一些概念混淆,现在更正一下。 B树 B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这种直译不好,容易产生误解。如人们可能会以为B-树是一种树,而B树又是一种树。事实上,B-tree就是指B树。特此说明。 先介绍一下二叉搜索树: 1.所有非叶子结点至多拥有两...

qq_22613757的博客 1万+

Open3D(C++) 点云构建三维Delaunay三角剖分

C++版本的Open3D实现从点云构建三维Delaunay,可视化效果。

点云侠的博客 2242

Unreal5 从入门到精通之 如何实现 离线语音识别

本文介绍了如何使用离线语音识别插件 Offline Speech Recognition 进行本地语音转文本处理。该插件支持离线运行,用户可以通过下载并运行语言服务器(如 Vosk)来处理语音数据。文章详细说明了如何设置语言服务器、下载语言模型,并在虚幻引擎(UE)项目中配置麦克风和语音捕获。此外,还介绍了如何将 SoundWave 作为输入,以及如何通过节点将语音数据发送到语言服务器进行处理。最后,提供了相关文档链接以供进一步参考。

TxNet 894

B树、B-树、B+树、B*树简介

B树 (二叉搜索树): 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结...

二十同学 7万+

python:实现brutefore破解wifi(附完整源码)

python:实现brutefore破解wifi(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 5643

什么是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树产生的背景 不管是二叉树、二叉查找树还是平衡二叉树,它们都有诸多限制,比如: 每个结点只能存储一个元素。 ..

学无止境! 2452

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

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

B树、B-树、B+树、B*树都是什么         今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片,这和磁盘碎片、内存碎片产生原理是类似的,这些存储碎片不仅占用了存储空间,而且降低了数据库运行的速度。如果发现索引中存在过多的存储碎片的话就要进行“碎片整理”了,最方便的“碎片整理”

史迪阳的博客 9727

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

B树、B+树、B*树

每个结点最多有m棵子树(子结点)根节点最少有一个子树,除根节点外,其他结点至少有[m/2]个子树所有叶节点都在同一层,按从小到大的顺序存放全部关键码,各个叶节点顺序连接有n个子树的结点有n个关键码所有非叶节点可以看成是叶节点的索引,节点中关键码Ki与指向子树的指针Pi构成对子树(即下一层索引块)的索引项(Ki,Pi),Ki是子树中最大的关键码B+ 树是 B 树的变体,也是一种多路搜索树。B*树是 B+ 树的变体,在 B+ 树的非根和非叶子节点再增加指向兄弟的指针B*树定义了非叶子节点。

2302_76977379的博客 1835

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

B 树、B- 树、B+ 树和B* 树

B树 即二叉搜索树: 1. 所有非叶子结点至多拥有两个儿子(Left和Right); 2. 所有结点存储一个关键字; 3. 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子

idber的学习笔记 6990

B树(B-树 B_树)、B+树、B*树

B树 B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。特此说明。 先介绍下二叉搜索树 1.所有非叶子结点至多拥有两个儿子(Left和Right)...

艾斯-李的博客 3558

B树、B-树、B+树、B树都是什么

为什么80%的码农都做不了架构师?>>> ...

weixin_34087307的博客 1032

B树、B-树、B+树、B*树图文详解

B树 B树又叫做二叉搜索树,倒状的树形结构。如下图所示 特点: 所有的非子夜节点最多拥有两个子节点树(左子树和右子树)。 所有结点存储一个关键字。 节点的左右儿子,左边是比该节点小的,右边是比该节点大的。 缺点: 因为二叉搜索树不存在平衡算法,所以在某些特殊的情况下,二叉搜索树等同于线性,出现蹩脚的情况,设计者们发现降低树的高度自然就可以提高查找效率。那么如何解决降低树的高度的问题?在这种基础上设计者给二叉树加入了平衡算法,出现了平衡树。 二叉树搜索树的.

NT的博客 3344
上一篇: 红黑树
下一篇: 平衡二叉树
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值