B树——插入和删除
B树——插入和删除
B树的插入
5阶B数——结点关键字个数向上取整m/2-1≤n≤m-1
即2≤n≤4

连续插入5个元素后,超出来了。

在插入key后,若导致原结点关键字数超过上限,则从中间位置(m/2向上取整)将其中的关键字分为两个部分,左部分包含的关键字放在原结点中,右部分包含的关键字放在新节点中,中间位置(m/2向上取整)的结点插入原结点的父节点

新元素一定是插入到最底层“终端结点”,用“查找”来确定插入位置

在插入key后,若导致原结点关键字数超过上限,则从中间位置(m/2向上取整)将其中的关键字分为两个部分,左部分包含的关键字放在原结点中,右部分包含的关键字放在新节点中,中间位置(m/2向上取整)的结点插入原结点的父节点,again







若此时导致其父节点的关键字个数也超过了上限,则继续进行这种分裂操作,直至这个过程传到根节点为止,进而导致B树高度增1

核心要求:
①对m阶B树——除根节点外,结点关键字个数m/2向上取整-1≤n≤m-1
②子树0<关键字1小于子树1<关键字2<子树2<。。
新元素一定是插入到最底层“终端结点”,用“查找”来确定插入位置
在插入key后,若导致原结点关键字数超过上限,则从中间位置(m/2向上取整)将其中的关键字分为两个部分,左部分包含的关键字放在原结点中,右部分包含的关键字放在新节点中,中间位置(m/2向上取整)的结点插入原结点的父节点。若此时导致其父节点的关键字个数也超过了上限,则继续进行这种分裂操作,直至这个过程传到根节点为止,进而导致B树高度增1
B树的删除

删除60

若被删除关键字在终端节点,则直接删除该关键字(要注意节点关键字个数是否低于下限m/2向上取整-1)

删除80
找直接前驱后者直接后继

若被删除关键字在非终端节点,则用直接前驱后直接后继替代被删除的关键字
直接前驱:当前关键字左侧指针 所指子树中“最右下”的元素

直接后继:当前关键字右侧指针 所指子树中“最左下”的元素


对非终端节点关键字的删除,必然可以转化为对终端节点的删除操作
低于关键字数下限
删除38

若被删除关键字所在节点删除前的关键字个数低于下限,且与此节点右(或左)兄弟节点的关键字个数还很宽裕,则需要调整该节点、右(或左)兄弟节点及其双亲结点(父子换位法)
其实就是在左右兄弟还很宽裕的时候,用当前结点的前驱(后继)、前驱的前驱(后继的后继)来填补空缺

删除90
左兄弟富裕,借下来

本质:永远保证子树0<关键字1小于子树1<关键字2<子树2<。。
删除49
兄弟不够借?

若被删除关键字所在结点删除前的关键字个数低于下限,且此时与该结点相邻的左、右兄弟结点的关键字个数均=m/2向上取整-1,则将关键字删除后与左(或右)兄弟节点及双亲结点中的关键字进行合并

但是73这个位置又不够关键字了。。。
把父节点的扒下来




知识回顾

5阶
B树——插入和删除的更多相关文章
- AVL树插入和删除
一.AVL树简介 AVL树是一种平衡的二叉查找树. 平衡二叉树(AVL 树)是一棵空树,或者是具有下列性质的二叉排序树: 1它的左子树和右子树都是平衡二叉树, 2且左子树和右子树高度之差的 ...
- HDU 5687 字典树插入查找删除
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5687 2016百度之星资格赛C题,直接套用字典树,顺便巩固了一下自己对字典树的理解 #include< ...
- AVL树的插入与删除
AVL 树要在插入和删除结点后保持平衡,旋转操作必不可少.关键是理解什么时候应该左旋.右旋和双旋.在Youtube上看到一位老师的视频对这个概念讲解得非常清楚,再结合算法书和网络的博文,记录如下. 1 ...
- B+树的插入、删除(附源代码)
B+ Tree Index B+树的插入 B+树的删除 完整测试代码 Basic B+树和B树类似(有关B树:http://www.cnblogs.com/YuNanlong/p/6354029.ht ...
- B树和B+树的插入、删除图文详解
简介:本文主要介绍了B树和B+树的插入.删除操作.写这篇博客的目的是发现没有相关博客以举例的方式详细介绍B+树的相关操作,由于自身对某些细节也感到很迷惑,通过查阅相关资料,对B+树的操作有所顿悟,写下 ...
- B树和B+树的插入、删除图文详解(good)
B树和B+树的插入.删除图文详解 1. B树 1. B树的定义 B树也称B-树,它是一颗多路平衡查找树.我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数 ...
- AVL 树的插入、删除、旋转归纳
参考链接: http://blog.csdn.net/gabriel1026/article/details/6311339 1126号注:先前有一个概念搞混了: 节点的深度 Depth 是指从根 ...
- AVL树(查找、插入、删除)——C语言
AVL树 平衡二叉查找树(Self-balancing binary search tree)又被称为AVL树(AVL树是根据它的发明者G. M. Adelson-Velskii和E. M. Land ...
- HDU_2871 线段树+vecor的中间插入和删除使用
本来这个题目就是个合并区间的题,就跟Hotel一样,要插入一段,则找左孩子 合并后的中间区间 右孩子,但是比较恶心的是,他需要实时得到某一段的起终点,或者某个点在第几个段里面,我想过在线段树里面加入几 ...
随机推荐
- IGH_Master主站配置驱动伺服电机和变频器总结
IGH_Master主站配置驱动伺服电机和变频器总结 Ethercat是倍福公司提出的一种工业现场总线协议,具有很好的实时性,IGH是一种开源的Ethercat主站实现协议,本文总结了一下使用IGH_ ...
- web自动化测试,弹出窗的操作
弹出窗有两种: 1.alert弹窗 2.页面弹出窗 什么是alert弹窗呢,点击某一个事件后,会弹出一个弹窗,如下图所示,相信大家在测试中有遇到过,怎么操作它呢 1.1弹窗出现后,使用switch_t ...
- Ⅶ. Policy Gradient Methods
Dictum: Life is just a series of trying to make up your mind. -- T. Fuller 不同于近似价值函数并以此计算确定性的策略的基于价 ...
- 精尽 MyBatis 源码分析 - SqlSession 会话与 SQL 执行入口
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- # 夏普R shv39 0基础精简优化指南
手机介绍 夏普AQUOS R是目前市面上用户数量和好评数量都非常多的一款产品.它性价比极高,适合各个年龄段的用户选择来满足办公或者家用或者娱乐等不同方面的需求.目前闲鱼价格在400左右,搭载骁龙835 ...
- [LGOJ1273]有线电视网
solution 用了一个很有意思的转移方法. $dp[i][j] $ 表达 \(i\) 作为根,\(j\)个终端时最大的收益,即钱数,当\(0\leq dp[1][i]\)时,即以1为根可以转移到\ ...
- Codeforces Round #661 (Div. 3) D、E1 题解
D. Binary String To Subsequences #贪心 #构造 题目链接 题意 给定一个\(01\)串\(s\),完全分割成若干子序列(注意,不要混淆子串与子序列的概念),其中的子序 ...
- Arduion学习(三)驱动温度传感器
一.实验目的: 1.将温度值打印显示在串口监视器 1.将温度值打印显示在串口,不同温度段显示不同的灯光,并在温度过高或过低时利用蜂鸣器报警. 二.实验准备: 1.查阅相关资料,了解本次实验所用到的引脚 ...
- HEXO | 给博客添加RSS
Hexo是一个简洁.高效.易用的博客框架,同时它拥有十分丰富的主题环境,本次我们所谈到的是cards主题,但是该主题的原生环境里没有相关的rss配置,所以我们需要采用手动添加的方式,进而实现rss功能 ...
- nameServer路由发现
RocketMQ路由发现是非实时的,当Topic路由出现变化时,NameServer不主动推动给客户端,而是客户端定时拉取主题最新的路由 总结: topic路由的是brokername