高度为5的3阶b树含有的关键字个数_数据结构要考得好,你心里要有B树

01

知识框架47378963727931f85ba4785607333090.png

02

知识点详解

1

B树

①定义与性质

B树也叫B-树。B树是一种平衡的多分树,通常我们说m阶的B树,是二叉排序树的一种扩展,它必须满足如下条件:

01

每个结点最多只有m-1个关键字。

02

根结点最少可以只有1个关键字。

03

非根结点至少有m/2个关键字。

04

每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。

根结点的关键字数量范围为[1,m-1];非根结点的关键字数量范围为[m/2,m-1];

②B树的插入

在进行B树的插入时,根据上面提到的B树的性质,我们可以总结出一条准则:在向B树插入结点时,先判断当前结点关键字的个数是否小于等于m-1,如果满足,直接插入即可,如果不满足,将结点的中间的关键字将这个结点分为左右两部分,中间的结点放到父结点中即可。下面我们来看具体的例子:Q:向一颗5阶B树中插入关键字A:5阶B树中,每个结点最多有4个关键字,最少有2个关键字(根结点除外)。

01

插入15,30,45,60

257b0bf3dc8cb08e2b0f39723bca2048.png

 

02

插入19,此时该结点的关键字个数大于,需进行分裂

0c9fbc84d83efa123bf558ec980f5a5f.png

03

插入20,25,28

35798e81c3890c87b0ffbda48609d4be.png

左边结点的关键字数大于4,分裂

9bbecf8fb2f062ccc6262a4bb6da5ef9.png

③B树的删除

B树的插入比插入稍复杂些,只要牢记B树应该满足的条件,就能够解题。下面我们来看一个B树删除关键字的例子:7effee447221d8d31f10adaaf07b2882.png

01

删除19,19所在结点所剩关键字个数大于2,则可以直接删除

1220535e944363282e00376c9aa829ab.png

02

删除30,30不是叶子结点,不能直接删除。这种情况的规则:30是非叶子结点,对于非叶子结点的删除,我们需要用后继的关键字覆盖要删除的关键字,然后在后继关键字所在的分支中删除该关键字。对于删除30,需要将后继元素32移到被删除的30所在的结点。

6cf928e8086c9c6f1185cbfab72048a0.png

92e0ffc3472e31adca5eddbce686a441.png

此时发现35所在的结点只有一个关键字,小于2个,这时候的规则是(向兄弟结点借元素):如果删除叶子结点,如果删除元素后元素个数少于(m/2),并且它的兄弟结点的元素大于(m/2),也就是说兄弟结点的元素比最少值m/2还多,将先将父结点的元素移到该结点,然后将兄弟结点的元素再移动到父结点。

9ecd740ba17ff8a2b012d654f20204e1.png

ab3d5d420bc4385e29702e81820ad9f5.png

03

删除40,删除后不满足B树要求。需要考虑向兄弟结点借元素,但兄弟结点也没有多的结点(2个),借不了。若遇到这样的情况,还是将先将父结点的元素移到该结点,然后,将当前结点及它的兄弟结点中的关键字合并,形成一个新的结点。

28b12c834ea2199a2dce42ac37872eb9.png

再与兄弟结点合并

2

B+树

①定义与性质

B树与B+树有很多相似之处:

01

根结点所含关键字范围:1 <= k <= m-1 

02

非根结点所含关键字范围:m/2 <= k <= m-1

不同点:

01

B+树有两种类型的结点:内部结点(也称索引结点)和叶子结点。内部结点就是非叶子结点,内部结点不存储数据,只存储索引,数据都存储在叶子结点。

02

内部结点中的关键字都按照从小到大的顺序排列,对于内部结点中的一个关键字,左树中的所有关键字都小于它,右子树中的关键字都大于等于它。叶子结点中的记录也按照关键字的大小排列。

03

每个叶子结点都存有相邻叶子结点的指针,叶子结点本身依关键字的大小自小而大顺序链接。 

04

父结点存有右孩子的第一个元素的索引。

下面我们来看一颗B+树,感受一下它和B树的区别。03ec91503d80b219353eb70c1d9abf31.png

②B+树的插入

B+插入操作很简单,掌握一个要点即可:当结点关键字数量大于m-1的时候,按中间关键字分裂成左右两部分,中间关键字分裂到父结点当做索引存储,但是,中间的关键字自身还是分裂右边结点这一部分的。下面给大家举一个B+树的插入例子:向一颗5阶的B+树中插入元素。分析:5阶B+树的结点中最少2个关键字,最多4个关键字。

01

插入10,16,22,28

2f21800b7c52bed5f633017edf31274a.png

 

02

插入30,此时该结点的关键字数量大于4个了,进行结点分裂

e9a8a88628bbdff27f908fc7bfde3cbe.png

03

接着插入35,39,结点继续分裂 

7bb6e3d6348dd3f120f2099606ed1de8.png

c4ccf7ba28a8402a8785ccd2c51372e5.png

③B+树的插入

对于删除操作是比B树简单一些的,由于叶子结点有指针的存在,向兄弟结点借元素时,不需要通过父结点了,而是可以直接通过兄弟节移动即可(前提是兄弟结点的元素大于m/2),然后更新父结点的索引;如果兄弟结点的元素不大于m/2(兄弟结点也没有多余的元素),则将当前结点和兄弟结点合并,并且删除父结点中的关键字。下面我们来看一个例子:初始状态B+树:36a4d15e05a5bd7e62fd5fd5f5fd7249.png

01

删除22,删除后,发现B+树不满足要求,且左边兄弟结点的关键字个数够借,借关键字后再修改父结点索引。

ee84267a4ac1807e3a473a12fac776d0.png

 

02

删除元素28,发现B+树不满足要求,并且发现左右兄弟结点都没有多余的关键字可借,此时选择与其兄弟结点合并再修改父结点索引。

b193b9b84221291a3a452ca4aad646f5.png

此时,其父结点(30)也不满足B+树条件,故将结点30与其兄弟结点进行合并

8cdae2a1a65be4cdbb336bc93aa6144b.png

03

相关习题

01

(2012年统考)已知一棵三阶B树,如下图所示删除关键字78得到一棵新B树,其 最右叶结点中的关键字是() 

ff218df9090c906436ce947c807292c3.png

A、60

B、 60, 62

C、62, 65

D、65

(点击选项查看答案)Tips:根据B树应满足的条件以及删除B树结点的准则即可解题。

02

(2016年统考)B+树不同于B树的特点之一是()

A、能支持顺序查找

B、 结点中含有关键字

C、根结点至少有两个分支

D、所有叶结点都在同一层上

(点击选项查看答案)Tips:B+树的叶结点包含了全部关键字信息,且按大小排列,故B+树支持顺序查找。B树只支持多路查找。

03

(2018年统考)高度为5的3阶B树含有的关键字个数至少是()

A、15

B、31

A、解放思想

B、与时俱进

C、实事求是

D、持续稳定

C、62

D、242

(点击选项查看答案)Tips:3阶B树的非根结点所包含的关键字个数最少是2个,而根结点最少包含1个关键字,这样的树型相当于一棵高度为5的满二叉树,利用公式计算出其包含的关键字个数最少是31。

计算机考研qq群

总群:625590924

广大:1143982604

暨大:1071137230

广工:938111325

华工:428389734

深大:729770764

浙大:978938582

厦大:1125268501

中大:921801084

南航:281118241

华农:515681663

重邮:736197896

北邮:1126650806

南邮:1109929146

广外:976231252

东北大学:1128523098

华南师大:428389734

南昌大学:923249141

0dfc14159ad4dcaa499f5e70d093270a.png

给个“在看”支持一下我

bbae6c8a874c273c7dc1b8e361efa599.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 --- 网络层路由算法与路由协议

路由表&#xff1a; 最佳路由&#xff1a; “最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。 路由算法的分类 静态路由算法&#xff08;非自适应路由算法&#xff09; 管理员手工配置路由信息。简便&#xff0c;可靠&#xff0c;在负荷稳定&#xff0c;拓扑…

cplex安装_Excel软件规划求解工具的安装与功能介绍

引言规划求解工具是Excel软件中自带的一个功能非常强大的加载项/工具。它能够完成包括线性规划、整数线性规划等一般规模的数学优化问题的问题求解。更重要的是&#xff0c;无论是在Windows操作系统下&#xff0c;还是苹果电脑Mac平台下&#xff0c;这个工具都是免费的。下面就…

计算机网络 --- 网络层IP数据报

IP数据报格式 首部 版本&#xff1a;IPv4/IPv6首部长度&#xff1a;单位是4B&#xff0c;最小为5。也就是说如果首部长度的四个bit的出来的数是8&#xff0c;那么首部长度就是8 * 4B 32B也就是32字节区分服务&#xff1a;指示期望获得哪种类型的服务总长度&#xff1a;首部数据…

线程管理(学习)

线程管理 在日常生活中&#xff0c;我们要完成一个大任务&#xff0c;一般会将它分解成多个简单、容易解决的小问题&#xff0c;小问题逐个被解决&#xff0c;大问题也就随之解决了。 在多线程操作系统中&#xff0c;也同样需要开发人员把一个复杂的应用分解成多个小的、可调…

imread函数_MATLAB图像处理:27:使用imtranslate函数平移图像

本示例说明如何使用imtranslate函数对图像执行平移操作。平移操作将图像在x或y方向或两者上移动指定数量的像素。将图像读入工作区。I imread(cameraman.tif);显示图像。图像的大小为256 x 256像素。默认情况下&#xff0c;imshow显示图像的左上角坐标为&#xff08;0,0&#…

计算机网络 --- 网络层IP地址

全世界唯一的32位/4字节标识符&#xff0c;标识路由器主机的接口。 IP地址&#xff1a;&#xff1a; {<网络号><主机号>} IP编址的历史阶段 分类的IP地址子网的划分构成超网&#xff08;无分类编址方法&#xff09; 分类的IP地址 特殊IP地址 私有IP地址 网络地址…

3测试图片显示置信度_云上的移动性能测试平台

1. 功能决定现在&#xff0c;性能决定未来性能测试在移动测试领域一直是一个大难题&#xff0c;它最直观的表现是用户在前台使用 App 时的主观体验&#xff0c;然而决定体验优劣的背后&#xff0c;涉及到了许许多多的技术变迁。当我们习惯于诺基亚时&#xff0c;智能机出现了&a…

计算机网络 --- 网络层重要协议

动态IP分配协议 --- DHCP协议 主机如何获得IP地址&#xff1a; 静态配置 包括IP地址&#xff0c;子网掩码&#xff0c;默认网关 动态配置 由DHCP服务器来分配 DHCP协议&#xff1a; 动态主机配置协议DHCP是应用层协议&#xff0c;使用客户、服务器方式&#xff0c;客户端和…

java 并发_Java并发防范机制

1.背景并发程序开发不可避免地要涉及多线程、多线程协作、数据共享和线程安全等问题。在多线程并发场景下&#xff0c;由于采用数据共享的线程通信模型可能导致多个线程之间并发时相互干扰&#xff0c;影响到程序的正常逻辑、无法保证正常的结果。为了保证程序在并发环境的正确…

水晶底是什么材质_都是红酒杯,水晶的和玻璃的有什么区别?

除了看酒杯的形状外&#xff0c;材质也是我们选酒杯不可忽视的一环。酒杯材质可简单分为玻璃酒杯和水晶酒杯。那么&#xff0c;水晶酒杯和玻璃酒杯到底有何不同&#xff1f;普通玻璃杯二氧化硅是主要成分&#xff0c;价格低廉&#xff0c;容易清洗普通玻璃酒杯材质较厚&#xf…

计算机网络 --- 网络层

主要任务是把分组从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务。网络层的传输单位是数据报。&#xff08;分组是把数据报进行切割形成&#xff09; 网络层主要功能 路由选择与分组转发异构网络互联拥塞控制 如果所有结点都来不及接收分组&#xff0…

mac 串口调试工具_MACamp;串口调试

上一篇文章讲了Mac下进行stm32开发wlzz&#xff1a;Mac下stm32开发(clion)​zhuanlan.zhihu.com不可避免的遇到了串口调试的问题,发现mac下进行串口调试还真的不太容易。下了不少网上的软件,发现都不是特别好用,有很多已经不支持现在的macos系统版本了。于是在CLion下搜索了一下…

golang atomic load 性能_设计模式之Golang单例模式

今天给大家讲下什么是单例模式&#xff0c;以及在Go语言中如何用正确的姿势实现它。其实单例模式是一种在平时开发中经常用到的软件设计模式。在设计模式结构中&#xff0c;其核心是只包含一个被称为单例的特殊类。通过单例模式可以确保系统中一个类只有一个实例&#xff0c;且…

计算机网络 --- 传输层

传输层概述 传输层是只有主机才有的层次&#xff08;路由器没有&#xff09;&#xff0c;为应用层提供通信服务&#xff0c;使用网络层的服务 传输层的功能 传输层提供进程与进程之间的逻辑通信&#xff08;网络层提供主机之间的逻辑通信&#xff09;。复用和分用传输层对收…

手机相机里面的m_荣耀V30 PRO详细评测:Matrix Camera相机矩阵开启5G视频时代

【IT168 评测】随着手机摄像头的配置越来越高&#xff0c;手机上已经能实现不俗的拍照效果&#xff0c;甚至超越了数码相机(DC)成为了人们最常用的拍照工具。进入今年的下半年&#xff0c;随着5G的商用&#xff0c;手机厂商对于手机的摄像头功能优化已经不局限于拍照&#xff0…

计算机网络 --- 传输层UDP协议

UDP只在IP数据报服务之上增加了很少功能&#xff0c;即复用分用和差错检测功能。 UDP的主要特点 UDP是无连接的&#xff0c;减少开销和发送数据之前的时延。UDP使用最大努力交付&#xff0c;即不保证可靠交付。UDP是面向报文的&#xff0c;适合一次性传输少量数据的网络应用。…

怎么调整字段长短_【芝士蛋糕怎么总烤不熟呢?】

烘焙群一位同学发来图片问&#xff0c;不是说看蛋糕有没有烤熟&#xff0c;要用牙签检测吗&#xff1f;可我这个芝士蛋糕&#xff0c;怎么扎都会带出面糊&#xff0c;烤不熟怎么办&#xff1f;看到这个被扎成刺猬的舒芙蕾芝士&#xff0c;原谅Windy 不厚道的笑了。也是Windy 疏…

计算机网络 --- 传输层TCP协议

TCP协议的特点 TCP是面向连接&#xff08;虚连接&#xff09;的传输层协议。每一条TCP连接只能有两个端点&#xff0c;每一条TCP连接只能是点对点的。TCP提供可靠交付的服务&#xff0c;无差错、不丢失、不重复、按序到达。可靠有序&#xff0c;不丢不重。TCP提供全双工通信。…

java 委托_java 能不能自己写一个类叫 java.lang.System/String 正确答案

来自&#xff1a;一汪清水 | 责编&#xff1a;乐乐链接&#xff1a;blog.csdn.net/tang9140/article/details/42738433正文 最近学习了下java类加载相关的知识。然后看到网上有一道面试题是能不能自己写个类叫java.lang.System&#xff1f;网上提供的答案&#xff1a;通常不可…

中奖人js滚动效果_js使用transition效果实现无缝滚动

作者&#xff1a;李大雷出自&#xff1a;SegmentFault 思否原文&#xff1a;segmentfault.com/a/1190000023945464前言无缝轮播一直是面试的热门题目&#xff0c;而大部分答案都是复制第一张到最后。诚然&#xff0c;这种方法是非常标准&#xff0c;那么有没有另类一点的方法呢…