【B树及B树的基本操作】

article/2025/9/9 4:31:52

文章目录

    • 1.B树的定义和特性
    • 2.B树的性质
    • 3.B树创建的过程。
    • 4.B树的删除
    • 5.总结

1.B树的定义和特性

B树是一种平衡的多路查找树
一棵m阶的B树(B树中所有结点的孩子个数的最大值为m),或为空树,或为满足下列特性的m叉树:

(1) 树中每个结点至多有m棵子树,至多含有m-1个关键字
(2)若根结点不是叶子结点,则至少有两棵子树;
(3) 非根非叶节点至少有 ⌈m/2⌉ 棵子树,至少含有 ⌈m/2⌉-1课子树
(4)所有的非终端节点中包含下列信息数据
在这里插入图片描述
在这里插入图片描述
(5)所有的叶子结点都出现在同一层次上,并且不带信息(可以看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空)。

我们可以借助实例来分析,例如下图所示为一棵3阶的B树。
在这里插入图片描述
注意绿色黄色标记的结点是内部结点,最下面一层蓝色标记的是外部结点

2.B树的性质

通过这颗3B树,我们可以得到他的一些性质:

(1)节点孩子的个数等于该结点中的关键字个数+1。
(2) 根据 (1)性质可得如果根结点有关键字,则它的子树的个数必然大于或等于2。
(3) 结点中的关键字都是有序的(递增或递减), 关键字两侧均有指向子树的指针,左指针所指子树的所有关键字都小于该关键字,右指针所指子树的所有关键字都大于该关键字。
(4) 下层结点的关键字总是落在有上层结点关键字所划分的区间内。例如本实例3阶B树第二层最右边结点的关键字13 和18划分了3各区间:(-∞,13),(13,18),(18,∞)。
(5)所有叶节点均在第4层上,代表查找失败的结点。

【例-1】下图所示的是一颗()
在这里插入图片描述

A.4阶B树 B.4阶B+树 C.3阶B树 D.3阶B+树
➸欢迎评论区留言

3.B树创建的过程。

(1)插入:

注意:如果插入前B树非空,那么插入位置一定在最底层中的某个非叶节点。
有前面讲的B树的特性可知,所有结点中关键字的个数n满足 ⌈m/2⌉-1<= n <= m-1 , 若插入后的关键字的个数小于m,则可直接插入。也就是每当插入一个结点后,都要检查节点内关键字的个数,看是否满足B树的条件。当插入结点的关键字个数大于m-1,必须对结点进行分裂。
(2)分裂:
从中间位置 ⌈m/2⌉ 将其中的关键字分为两部分,左边部分的关键字放在原节点中,右边部分放到新的节点中。中间位置 ⌈m/2⌉ 的节点插入有以下两种情况:
如果没有双亲节点,新建一个双亲节点,B树的高度增加一层。
如果有双亲节点,将中间位置的节点插入到双亲节点中去。
分裂的过程:
在这里插入图片描述
【例-2】关键子序列为:
(1 ,2 ,6, 7 ,11 ,4 ,8,13, 10 ,5,17 ,9 ,16, 20 ,3 ,12 ,14, 18 ,19 ,15)。
创建一颗5阶B数。
注意: 最多关键字的个数Max = m-1 = 4。

在这里插入图片描述
在这里插入图片描述
小伙伴们,如果觉得有帮助,可以练习下面几道例题.

【例-3】关键子序列为:(5,6,9,13 ,8,2,12,15)。创建一颗4阶B数。
注意: 最多关键字的个数Max = m-1 =3

在这里插入图片描述

【例-4】关键子序列为:(20 30 50 52 60 68 70)给出创建一颗3阶B树。
注意: 最多关键字的个数Max = m-1=2
在这里插入图片描述

4.B树的删除

由前面讲的B树的性质我们知道,在一棵m阶B树中,所有非根非叶节点的关键字个数≥ ⌈m/2⌉-1,所以当我们对结点中的关键字删除后,也要保证其结点内的关键字个数≥ ⌈m/2⌉-1
当删除的关键字K不在最底层非叶结点时,我们可以用其前驱或后继K1来替代K,然后在相应的结点删除K,
我们开看看下面删除的实例吧:
在下图的的4阶B树中删除关键字9,我们用它的前驱8来替代,然后在相应节点中删除8

关键字个数Min=⌈m/2⌉-1=1
在这里插入图片描述
当被删除关键字在最底层非叶结点时,有下列三种情况。
♔♔直接删除关键字。若被删除关键字所在结点的关键字个数≥ ⌈m/2⌉,则直接删除关键字
♔♔兄弟够借。若被删除关键字所在结点的关键字个数= ⌈m/2⌉-1,并且其左右兄弟结点中的关键字个数≥ ⌈m/2⌉,则需要调整左右兄弟以及双亲结点的位置。

我们开看看一个具体实例:
在下图的的4阶B树中删除关键字7

在这里插入图片描述
♔♔兄弟不够借。若被删除关键字所在结点的关键字个数= ⌈m/2⌉-1,并且其左右兄弟结点中的关键字个数=⌈m/2⌉-1,则将关键字删除后,将其左(或右)兄弟与其双亲结点合并。
我们开看看一个具体实例:
在下图的的4阶B树中删除关键字5
在这里插入图片描述

5.总结

今天就先暂时写到这了,水平有限,哪里写的不好,还请谅解,有问题欢迎评论区留言!!!


http://chatgpt.dhexx.cn/article/En9B9AuY.shtml

相关文章

B树和B+树的区别

文章目录 简述写在前面1、B树2、B树 深入浅出B树B树深入B-树的查找 B 树B树概述 B-树和B树的区别拓展&#xff1a;MySQL为什么使用B-Tree&#xff08;BTree&#xff09;&& 存储知识存储数据最小单元主存存取原理磁盘存取原理 总结 简述 写在前面 大家在面试的时候&am…

B树(B-树)详解

B-树&#xff0c;即为B树。因为B树的原英文名称为B-tree&#xff0c;而国内很多人喜欢把B-tree译作B-树&#xff0c;B-tree就是指的B树。 B-树容易让人误解,建议大家用B树称呼, 本文以下直称B树 这篇介绍概念, 优点应用等, B树的描述和增删改查请到隔壁我写的另一篇(篇幅较长…

数据结构 —— B树

文章目录 1、B树的定义1.1、B树的特性1.2、B树的高度1.3、性能分析1.4、B树的补充说明1.5 、B树、B-树 、B-tree、B tree的区别 2、B树的插入操作以5阶B树为例&#xff0c;介绍B树的插入操作&#xff0c; 3、 B树的删除操作以5阶B树为例&#xff0c;介绍B树的删除操作 4、B树相…

B树和B+树详解

B树、B树看这一篇就够了 [TOC](B树、B树看这一篇就够了) 引言B树什么是B树以及B树是怎么来的B树的基本性质B树的新增和删除B树的插入B树的删除 B树什么是B树以及为什么要有B树B树的基本性质B树的查找 B树与B树的比较B树的优势B树的优势两者的细节对比 B树与B树在实际代码中的应…

B-树(B树)详解

https://www.jianshu.com/p/7dedb7ebe033 具体讲解之前&#xff0c;有一点&#xff0c;再次强调下&#xff1a;B-树&#xff0c;即为B树。因为B树的原英文名称为B-tree&#xff0c;而国内很多人喜欢把B-tree译作B-树&#xff0c;其实&#xff0c;这是个非常不好的直译&#xf…

B树和B+树

目录 一、BST树到AVL树到B树的简介 1.1 BST树 --- 二叉排序树 1.2 AVL树 --- 平衡二叉树 1.3 B树 --- 平衡多路查找树 1.3.1 B树的查找结点过程 1.3.2 B树的添加结点过程&#xff08;和结点分裂过程&#xff09; 1.3.3 B树的删除结点过程 二、B树 2.1 B树和B树 一…

在群晖NAS部署_开源在线项目任务管理工具【dooTask】

一、dooTask简介 1.1、说明 Dootask 是一款由国人开源的轻量级在线项目任务管理工具&#xff0c;它提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时通讯IM&#xff0c;文件管理等功能。基于PHP与Vue编写&#xff0c;遵守AGPL3.0开源协议。 1.2、特…

软件项目管理的重点知识

软件项目管理的重点知识 1.软件项目管理概述 1.1项目是什么 项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。 1.2常见的项目 生活中的项目 生日聚会野餐活动集体婚礼 大项目 微软的操作系统阿波罗计划神州飞船计划鸿蒙操作系统开发一个网站运…

推荐八款好用的项目管理工具

要想取得项目成功&#xff0c;避不开包括计划、执行、监控等。使用项目管理工具可以帮助项目经理制定项目计划&#xff0c;监控项目执行&#xff0c;跟踪项目进度。 1、进度猫 进度猫是国产的一款项目管理工具以甘特图为向导&#xff0c;基于任务清单todolist&#xff0c;支持…

工程项目管理软件有哪些?这六款很好用!

工程项目管理软件哪个好用&#xff1f;这六款很不错&#xff01; 在现代社会中&#xff0c;软件已经成为了企业信息化、项目管理等方面必不可少的工具。尤其是对于工程项目管理而言&#xff0c;借助软件进行协同、计划、控制等方面的工作&#xff0c;已经成为了必要的手段。但…

项目管理-软件:国内外知名IT项目管理工具【Worktile、PingCode、Jira、Clarizen、禅道】

IT项目管理随着敏捷的普及&#xff0c;支持其开发模式的工具也越来越多。它和瀑布工具的巨大差异在于一个是任务管理模式&#xff0c;一个是需求驱动管理模式。在这里&#xff0c;我列出了在国内外最知名最好用的敏捷工具及其网站。IT项目管理&#xff0c;或者说研发管理软件是…

10款最佳项目管理工具推荐

1、进度猫 进度猫是一款以甘特图为向导的轻量级在线免费项目进度管理工具。 特点&#xff1a; 基于甘特图、进度管理、任务管理ToDo、在线思维导图、团队协作随时把控项目进度,让项目管理一目了然。 甘特图显示项目的进度和具体任务清单。 对未完成任务、已完成任务进行分类…

知乎热推 6 款在线项目管理工具测评

用了一段时间的项目管理工具后&#xff0c;简单的总结项目管理工具就是&#xff1a; 一个能够满足项目经理对项目资源&#xff08;人员、文件和时间&#xff09;的管理&#xff0c;同时提供了项目进度可视化展示和支持团队合作的平台工具。 在这里&#xff0c;对知乎上热推的几…

项目管理系统源码

项目管理系统源码 功能介绍&#xff1a; 1&#xff1a;权限管理 。 对公司人员&#xff0c;组织架构进行管理&#xff0c;对用户采用角色授权的方式控制结点、菜单权限 3&#xff1a;项目管理。 对一个项目可以进行分阶段&#xff0c;分任务…划分&#xff0c;对每个划分点…

说好求一款在线项目管理软件,你们为什么推荐钉钉?

作为一名整天被各种项目虐得发际线不断后移的项目经理&#xff0c;对于项目管理工具&#xff0c;我是认真的。然而&#xff0c;混迹某些交流群中&#xff0c;时不时碰到有人询问推荐在线项目管理工具&#xff0c;总有人出来说&#xff1a;钉钉。纳尼&#xff1f;钉钉在我眼里真…

如何在项目管理中使用PERT图

PERT是一个项目管理计划工具&#xff0c;用于计算实际完成项目所需的时间。PERT代表计划评估审查技术。PERT图表是用于计划项目内任务的工具 - 可以更轻松地安排和协调完成工作的团队成员。 PERT图表创建于20世纪50年代&#xff0c;旨在帮助管理美国海军的武器和防御项目的创建…

项目资源管理

目录 申明1. 核心概念2. 虚拟团队/分布式团队3. 规划质量管理3.1.1 输入3.1.2 工具和技术3.1.2.1 责任分配矩阵 3.1.3 输出 4. 估算活动资源4.1.1 输入4.1.2 工具与技术4.1.3 输出4.1.3.1 资源分解结构RBS 5. 获取资源5.1.1 输入5.1.2 工具与技术5.1.3 输出 6. 建设团队6.1.1 输…

发现一款好用的在线项目管理工具(有免费版)

&#xff08;注&#xff1a;本文转载自网络&#xff09; 在线项目管理工具指的是不用安装服务器的云部署项目管理软件&#xff0c;这种部署方式的软件可随时开通、节约成本&#xff0c;但质量也参差不齐。 考虑到多方面因素&#xff0c;我们公司最终决定用在线的项目管理工具&…

计算机毕业设计PHP在线项目管理(源码+程序+VUE+lw+部署)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; phpStudy Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; 原生PHP Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要…

Jpom(Java Project Online Management)Java项目在线管理

Jpom(Java Project Online Management)Java项目在线管理 在linux 中管理jar包运行&#xff0c;如SpringBoot、Jboot、jfinal、t-io项目如果是打包为Jar那么我们一般是使用shell 命令来管理, 如果有多个项目管理起来显得比较麻烦。 如果新增、更新、删除项目都不是很方便。 再或…