数据结构(七)——B树和B+树

7.4.1_1 B树

5叉查找树

//5叉排序树的结点定义
struct Node {ElemType keys[4];          //最多4个关键字struct Node &child[5];     //最多5个孩子int num;                   //结点中有几个关键字
};

如何保证查找效率?
eg:对于5叉排序树,规定除了根节点处。任何结点都至少有3个分叉,2个关键字

策略: ①m叉查找树中,规定除了根节点外,任何结点至少有\left \lceil m/2 \right \rceil个分叉,即至少含有\left \lceil m/2 \right \rceil -1个关键字
②m叉查找树中,规定对于任何一个结点,其所有子树的高度都要相同。

7.4.1 B树

B树,又称多路平衡查找树,B树中所被允许的孩子个数的最大值称为B树的阶,通常用m表示。一棵m阶B树或为空树,或为满足如下特性的m叉树:
1)树中每个结点至多有m棵子树,即至多含有m-1个关键字。
2)若根结点不是终端结点,则至少有两棵子树。
3)除根结点外的所有非叶结点至少有\left \lceil m/2 \right \rceil棵子树,即至少含有\left \lceil m/2 \right \rceil -1个关键字。
5)所有的叶结点都出现在同一层次上,并且不带信息(可以视为外部结点或类似于折半查找判定树的查找失败结点,实际上这些结点不存在,指向这些结点的指针为空)。





7.4.1_2 B树的插入和删除

B树的插入


7.4.1_3 B+树

一棵m阶的B+树需满足下列条件:
1)每个分支结点最多有m棵子树(孩子结点)。
2)非叶根结点至少有两棵子树,其他每个分支结点至少有「m/2]棵子树。
3)结点的子树个数与关键字个数相等。
4)所有叶结点包含全部关键字及指向相应记录的指针,叶结点中将关键字按大小顺序排列,并且相邻叶结点按大小顺序相互链接起来。
5)所有分支结点中仅包含它的各个子结点中关键字的最大值及指向其子结点的指针。

B+树 VS B树
m阶B+树:
1)结点中的n个关键字对应n棵子树
2)根节点的关键字数n∈[1, m]
其他结点的关键字数n\in [\left \lceil m/2 \right \rceil ,m]
3)在B+树中,叶结点包含全部关键字,非叶结点中出现过的关键字也会出现在叶结点中
4)在B+树中,叶结点包含信息,所有非叶结点仅起索引作用,非叶结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。

m阶B树:
1)结点中的n个关键字对应n+1棵子树
2)根节点的关键字数n∈[1, m-1]。
其他结点的关键字数n\in [\left \lceil m/2 \right \rceil -1,m-1]
3)在B树中,各结点中包含的关键字是不重复的
4)B树的结点中都包含了关键字对应的记录的存储地址

在B+树中,非叶结点不含有该关键字对应记录的存储地址。
可以使一个磁盘块可以包含更多个关键字,使得B+树的阶更大,树高更矮,
读磁盘次数更少,查找更快

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

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

相关文章

校园智能水电预付费管理系统

校园智能水电预付费管理系统是一种专为学校水电资源管理而设计的智能化系统,旨在提供全面的水电资源管理解决方案,满足校园管理者对水电资源管理的需求。该系统整合了先进的智能技术和云计算,为校园管理者提供了实时监控、自动计费、节能管理…

Java面试八股之经验总结

我们先来聊聊面试的技巧吧,只是单纯的个人经验总结,如果大家觉得有道理,就选择性吸收一下就好了。如果觉得没用,可以直接跳过。 自我介绍一定要好好准备。我之前对自我介绍这部分也不是很重视,面试多了之后我发现&…

钉钉OA审批评论接口,如何@ 人并发送通知

钉钉OA审批评论接口,如何 人并发送通 问题描述: 相关接口:https://oapi.dingtalk.com/topapi/process/instance/comment/add 我希望在钉钉oa审批流程中,添加评论的同时通过“”或者其他方式提醒流程发起人去跟进审批工作。 但我…

数据寻址方式

立即数寻址速度>寄存器寻址>直接寻址 https://blog.csdn.net/qq_58099084/article/details/120602982

【Linux】Linux信号

目录 信号的概念 生活中的信号 Linux中的信号 kill命令 kill 命令的使用 常见的信号 命令行代码示例 注意事项 信号的处理方式 产生信号 信号的捕捉 信号捕捉示意图 内核如何实现信号捕捉 信号的捕捉与处理 小结 阻塞信号 信号在内核中的表示图 信号集操作函数…

Java时间戳转换全攻略:从1712560695839到日期

哈喽,大家好,我是木头左! 一、时间戳是什么?为什么需要它? 时间戳,简单来说,就是一个表示特定时间点的数字。在计算机科学中,时间戳是一个非常重要的概念,因为它们被广泛…

linux 挂载云盘 NT只能挂载2T,使用parted挂载超过2T云盘

一、删除原来挂载好的云盘和分区 1、查看挂载号的云盘 fdisk -l 发现我们有5千多G但是只挂载了2T,心里非常的慌张!十分的不爽! 好,我们把它干掉,重新分区! 2、解除挂载 umount /homeE 没保存跳转到&…

「每日跟读」英语常用句型公式 第14篇

「每日跟读」英语常用句型公式 第14篇 1. As far as __ is concerned 就__ 而言 As far as the project timeline is concerned, we’re running ahead of schedule. (就项目时间表而言,我们进度超前了。) As far as the exam results ar…

【高精度算法】【蓝桥杯备考训练】:高精度加法、高精度减法、高精度乘法、高精度除法【已更新完成】

目录 1、高精度加法 2、高精度减法 3、高精度乘法 4、高精度除法 1、高精度加法 给定两个正整数(不含前导 0),计算它们的和。 输入格式 共两行,每行包含一个整数。 输出格式 共一行,包含所求的和。 数据范围 1≤…

二分查找的时间复杂度的讲解

二分查找的代码: 二分查找的时间复杂度: 最坏的情况: 就是找不到和查找区间只剩一个值的时候,这两种都是最坏的结果,假设查找了x次,达到了最坏的结果: N代表每一次折半区间数据的个数&#xf…

基于unlink 和黑白名单实现删除脚本(日志清理、历史备份清理)

零 摘要 rm 过于强大,当使用root 用运行删除脚本时,总是担心误删除,本脚本改用unlink 命令删除单文件,使用黑白名单限制删除文件所在目录,只有被删除文件不在黑名单目录下且同时在白名单目录下才能删除 一 脚本 #!/…

GNeRF的一些具体细节

Abstract GNeRF,一个结合生成对抗网络(GAN)和神经辐射场(NeRF)重建的框架,用于未知甚至随机初始化相机姿态的复杂场景。最近基于 NERF 的进展已经获得了显着的现实新视图合成的普及。然而,大多数方法都严重依赖于摄像机姿态的精确估计&#…

【过程11】——教育被点燃的路上

这里写目录标题 一、背景二、过程1.两年四十万的认知改变2.三年打工仔的经历改变3.一年计算机的人生蜕变4.后面的展望 三、总结 一、背景 人生在世,对于一些事情的笃信笃行;背后真的会有莫大无以言表的波涛。 这个事情到现在已经五年半左右时间了&#…

分类算法——文章分类(五)

文章分类计算 计算结果 P(C|Chinese,Chinese,Chinese,Tokyo,Japan)-->P(Chinese, Chinese, Chinese, Tokyo, Japan|C) * P(C)/P(Chinese, Chinese, Chinese, Tokyo, Japan) P(Chinese|C)5/8 P(Tokyo|C) 0 P(Japan|C) 0思考:我们计算出来某个概率为0,…

mybatis基础篇-mybatis使用-mybatis工具类封装

mybatis官网 https://mybatis.org/mybatis-3/zh_CN/getting-started.html 官网跳转连接 jar包下载 https://download.csdn.net/download/weixin_44201223/89146621 本练习所需jar包资源下载 1、创建数据库数据 # 创建数据库 create database test; use test; # 创建表 cre…

Qt学习笔记(一)

信号与槽机制 本质上就是观察者模式; ------------------------------------------信号槽是Qt框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发…

导致苹果IPA应用APP打开提示“已到期”的原因及解决办法

哈喽,大家好呀,淼淼又来和大家见面啦,有许多小伙伴们在使用iOS设备的时候,有时候可能会遇到打开某个IPA应用时出现“已到期”的提示,这种情况通常会发生在开发者证书过期、时间设置问题、重新签名错误等情况下。这一期…

力扣452 用最少数量的箭引爆气球 Java版本

文章目录 题目描述代码 题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完…

李沐46_语义分割和数据集——自学笔记

语义分割 语义分割将图片中的每个像素分类到对应的类别。 实例分割(目标检测的进化版本) 如果有物体,会区别同一类的不同物体。 语义分割重要数据集:Pascal VOC2012 %matplotlib inline import os import torch import torch…

Java -- (part12)

一.权限修饰符 1.属性:用private ->封装思想 2.成员方法public ->便于调用 3.构造public ->便于new对象 二.final关键字 1.修饰类 a.格式 -- public final class 类名 b.特点:不能被继承 2.修饰方法 a.格式:修饰符 final 返回值类型 方法名(形参){} b.特点…