2024/9/9 408“回头看”:b树

news2024/11/24 17:39:22

B树是什么?有什么作用?B树的插入和删除具体细节是什么?除了B树还有一个是B+树、还是B-树,他们有什么区别,又有什么相同点?

b树在王道考研查找这一章,所以他的主要作用就是查找。

在学习b树之前,先要回顾一下二叉查找树。他的结构体是:

typedef struct BSTNode{
int key;
struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;

不难看出它的结构,下面给个图示,就更加简洁明了了。

我们有个想法,能不能增加更多的分类?就是说从二叉查找树变成m叉查找树。于是b树就产生了。

结构体如下:

struct Node{
ElemType keys[4];
struct Node *chile[5];
int num; //结点中有几个关键字
};

从上面我们可以知道,假如一个结点有四个关键字,那么有五个分叉。

即如图所示:

有了这张图片就清晰很多了,同时也指出了几个特点:节点内关键字有序(方便查找,从结构体内我们知道,结点里是数组),根结点最少有一个关键字(很好理解,根结点假如没有关键字,那他不能向下分叉)。

这里还有一个规定,除根结点外(老大特殊),每个接点都有最少得关键字限制(为了提高查找效率,如果都是一个关键字,那和二叉查找树有什么区别?)

先说分叉,至少有一半以上的分叉,假如child[4],->至少两个分叉、child[5]->至少是有3个分叉。即偶数/2,奇数/2再四舍五入。

还有一个策略是忽略的,就是在m叉查找树中,任何一个节点,其所有子树的高度都要相同。也就是说所有叶结点都在同一层。b树的叶子结点是查找失败的结点。

b树的插入:

一个一个插入:溢出之后把他们从中间劈开、分给左右孩子。注意:新节点一定是插在终端节点那一层!(未溢出时)

此时中间劈开原结点分给父节点(这里体会到了结点内关键字有序的好处)这里还是把80移到父节点。规律总结:在插入key后,若导致原结点的关键字数超过上限,则从中间位置将其分成两部分,左部分放在原结点,右部分包含的关键字放到新节点,中间位置插入原结点的父节点。

若根结点满了!继续分裂:

b树的删除:

分多种情况:

终端节点:直接删除!(但是要注意删除完成之后,该结点的关键字个数是否小于一半)

非终端结点:用直接前驱替代:

用直接后继替代:

兄弟够借(找父母要,然后兄弟补给父母):右兄弟富裕

删除38

左兄弟富裕:删除92

兄弟不够借:

b+树:

图中是四阶b+树,下面说一下特点:分叉情况和b树一样。

结点的子树与关键字数相等。

所有叶结点包含全部的关键字,大小顺序排列,且相邻叶结点按大小顺序相互链接起来。

所有分支结点中仅包含它的各个子节点中关键字的最大值及指向其子节点的指针。

对比:b树的关键字每一层都有,而b+树的关键字只可能是在叶子结点。

真题训练:

注意:b-树也叫作b树。

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

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

相关文章

基于单片机一种风速测量仪的设计

文章目录 前言资料获取设计介绍功能介绍设计程序具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设…

WEBSERVER完整体系

为什么还要做 WebServer? ①对于缺乏项目经验的C++新手,网上可找到的详细项目资料有限,多为简单的管理系统、五子棋游戏、工具库或WebServer等。 ②WebServer项目有助于整合面试所需的基础知识,如C/C++语言、操作系统(包括I/O调用和多路复用机制)、计算机网络(处理网络…

NUUO网络视频录像机 css_parser.php 任意文件读取漏洞复现

0x01 产品简介 NUUO网络视频录像机(Network Video Recorder,简称NVR)是NUUO Inc.生产的一种专业视频监控设备,它广泛应用于零售、交通、教育、政府和银行等多个领域。能够同时管理多个IP摄像头,实现视频录制、存储、回放及远程监控等功能。它采用先进的视频处理技术,提供…

生成身临其境的环境模型

清华大学创作的AI软件 aiuni Aiuni.ai是一个基于Unique3D的在线AI图片转3D模型生成建模工具,它的核心功能基于Unique3D,能够从单张图片中生成高效率且高质量的3D模型建模。这项技术的出现,为3D视觉艺术家、游戏开发者以及教育工作者等专业人士…

keil5移植freeRTOS中出现的erro,无法识别_asm

不识别__ASM关键字,并对汇编语法报错。 static portFORCE_INLINE void vPortClearBASEPRIFromISR( void ){__asm{msr basepri, # 0}} 解决办法: 编译器对于汇编和C的混合代码格式做了要求,按照以下方式修改汇编代码,即可编译通过。 static p…

语言课学习系统的设计与实现

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全…

游戏加速器行业需要办理什么许可证?

我们先来看下,目前做游戏加速器的企业都办理了哪些许可证? 1、流星游戏加速器 流星游戏加速器 流星游戏加速器办理了许可资质 他们办理了IDC、ISP、CDN、VPN、ICP、EDI等增值电信业务经营许可证,办理的还是比较全面的。 2、香肠游戏加速器…

CSS —— 界面布局

flexbox - 弹性盒子布局(弹性布局) 采用flex布局的元素,称为 Flex 容器(flex container),简称"容器" flex-direction 用于设置主轴方向;子元素默认是按照主轴线排列的,所…

Ubuntu中安装Nginx实现靶场的端口转发及其过程中错误的处理

1、安装Nginx需要的配置文件和库: sudo apt-get update sudo apt-get install -y g libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev 2、下载Nginx: wget -c https://nginx.org/download/nginx-1.18.0.tar.gz 3、解压Nginx: tar -zxvf nginx-1.18.0.ta…

群晖SPK套件之NAS公网助手的安装教程

本文将详细介绍神卓互联NAS助手SPK套件的安装步骤,帮助您轻松实现外网访问内网NAS设备。 目录 一、准备工作 二、下载SPK套件 三、安装SPK套件 四、登录套件并配置外网访问 一、准备工作 在开始安装之前,请确保您已满足以下条件: NAS设…

简单说说关于shell中zsh和bash的选择

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、什么是shell、bash、zsh?2.1 bash2.2 zsh 三、选择 Bash 还是 Zsh?…

力扣题/回溯/单词搜索

单词搜索 力扣原题 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那…

2024微信个人名片在线生成HTML源码

源码介绍 微信个人名片卡片在线生成,这是一款微信个人名片生成网站源码,无第三方接口,本地直接生成可长期使用。 主要用于生成用户个性化的名片页面,包括头像、姓名、联系方式、个人介绍等信息。 在本地浏览器打开即可,源码是h…

使用VSCode 安装SAP Fiori 开发所需插件

文章目录 1.0 SAP Fiori Tools - Extension Pack2.0 SAPUI5 Extension 1.0 SAP Fiori Tools - Extension Pack 此插件集成了SAP Fiori 的多个插件,安装这个将包含其他Fiori安装插件 SAP Fiori工具-扩展包 SAP Fiori Tools简化了SAP Fiori元素应用程序的开发。包括…

AI基础 L17 Logic Agents II

Logic in General • Logics are formal languages for representing information such that conclusions can be drawn • Syntax defines the sentences in the language • Semantics define the “meaning” of sentences; i.e., define truth of a sentence in a world •…

文件存储阿里云

1.图片存储 图片存储是指将图片文件保存在服务器或云存储中的技术或服务。图片存储的主要目的是方便用户上传、存储、管理和分享图片文件。 图片存储可以分为两种主要类型:本地存储和云存储。 本地存储是将图片文件保存在本地服务器或计算机上的一种方式。这种存…

SpringBoot教师招聘管理系统---附源码81097

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.1.1 技术可行性 2.1.2 经济可行性 2.1.3 操作可行性 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功…

【运维监控】Prometheus+grafana监控spring boot 3运行情况

本示例通过spring boot自带的监控信息暴露出来,然后将数据收集到prometheus中,最后通过grafana的dashboard导入模板进行可视化。本示例分为四个部分,即prometheus、grafana部署、springboot示例和最后的集成。说明:本示例中的部署…

ubuntu ifconfig只有lo

ubuntu当前状态: 1、ubuntu系统所用网络模式为桥接模式。 2、ubuntu能ping通主机。 3、Ubuntu中没有wired connected选项,无法设置网络。 解决方案: 1.在Ubuntu终端输入命令: sudo lshw -c Network 检查网络状况发现-network …

精密量测软件(仿KLA免费浏览器程序ProfilmOnline)

KLA在线软件分析图 软件仿KLA公司免费浏览器软件ProfilmOnline,软件地址ProfilmOnline - 用于3D轮廓仪和AFM的表面成像、分析和测量软件 可以直接从profilmonline上下载3D图加载对比分析,当前已完成的内容有 1、调平 2、尖峰去噪 3、能量密度图&…