热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

B树为什么具有相同的深度?

B树的分裂行为导致了B树具有相同的深度。不过要清楚的知道这一点,要从节点从0到节点变满,到第一次有分层,知道深度不断增大的流程开始

B树的分裂行为导致了B树具有相同的深度。不过要清楚的知道这一点,要从
节点从0到节点变满,到第一次有分层,知道深度不断增大的流程开始,直接上图:

首先是一个空的根节点:

空节点

然后第一次有了第一个关键字:
在这里插入图片描述

由于其节点元素大小不是我的观察重点,所以用e代替,用\代表空

假如我们的B树最小度数为t,那么一直插入关键字的话:
先根节点称为一个满节点:

在这里插入图片描述
------------------------ 【1-a】 3个关键字,所有孩子为空--------------------------

在这里插入图片描述

------------------------ 【1-b】 2t-2个关键字关键字,所有孩子为空。--------------
当节点存在2t-2个关键字时,其处在一个临近分裂的状态,节点在此环境下,
再插入一个关键字,B树为了方便后续插入,即防止分裂向上传播,会将其
预分裂。
分裂行为如下,插入了一个关键字,节点满了2t-1个。(此节点为合法B树节点)
在这里插入图片描述

在这里插入图片描述

继续不断地添加节点,其中只要当第二层的某个节点等于2t-1关键字,其就会给父节点增加一个关键字。(这样做实际上维持了父节点关键字个数n,具有n+1孩子的性质)

在这里插入图片描述

最终子节点不断增多,第一层根节点又有2t-1个了,根节点也要分裂不过这次多少不一样,它的孩子域下有子代的,此时的分裂带有子代分裂。

在这里插入图片描述

再次观察分裂细节(把上面的根节点放大),此时根节点开始分裂:

在这里插入图片描述
其中每个椭圆都是具有t-1个关键字叶子节点。
这种分裂都是按这种方式进行,其实现在就很好理解为什么叶子节点深度相同。因为B树不像二叉树一样在叶子节点的下面插入,而是就是插入到叶子节点,这样叶子节点如果有空间,就插了,没有空间,就分裂成两个相同深度的叶子节点,如果父节点也满了,会继续父节点也分裂,直到满足存储需求,如果到根节点还没满足,就新建一个根节点,将原来父节点分裂,深度加一层。而原来父节点是两个子代域具有相同深度,相同深度的两个子代域连接一个父节点,保证其后叶子节点深度相同。
因此,空间够不够深度都不变,一开始深度相同,那深度就一致相同了。


推荐阅读
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • github上_idea上传本地项目到github上(图解)
    本文由编程笔记#小编为大家整理,主要介绍了idea上传本地项目到github上(图解)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 计算成像的原理与应用研究
    本文探讨了计算成像的原理与应用研究。首先介绍了小孔成像实验和软件方面的相关内容。随后从傅里叶光学的角度简单谈了成像的过程。成像是观测样品分布的一种方法,通过成像系统接收光的强度来呈现图像。视网膜作为接收端接收到的图像实际上是由像元组成的矩阵,每个元素代表相应位置像元接收光的强度。大脑通过对图像的分析,得出一系列信息,如识别物体、判断距离等。计算成像是一种采集记录系统,通过处理数据得到样品分布与像的对应关系,用于后续问题的分析。 ... [详细]
  • 本文介绍了优化算法改进的侏儒猫鼬优化算法(IDMO)及其Matlab源码分享。文章首先介绍了获取代码的两种方式,包括付费下载和付费订阅付费专栏。然后详细解释了侏儒猫鼬优化算法的原理和特点,以及其在集体觅食、侦察和保姆交换等方面的应用。最后提供了CSDN资源下载链接,供读者下载相关代码。 ... [详细]
  • 在线教育平台的搭建及其优势
    在线教育平台的搭建对于教育发展来说是一次重大进步。未来在线教育市场前景广阔,但许多老师不知道如何入手。本文介绍了在线教育平台的搭建方法以及与传统教育相比的优势,包括时间、地点、空间的灵活性,改善教育不公平现象以及个性化教学的特点。在线教育平台的搭建将为学生提供更好的教育资源,解决教育不公平的问题。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • php支持中文文件名
    2019独角兽企业重金招聘Python工程师标准大家可能遇到过上传中文文件名的文件,或者读取中文目录时不能读取,出现错误的情况这种情况是因为php自动将中文字符转成了utf8 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文讲述了叶王在水中醒来时,听到一个男孩说话的声音,但很快又忘记了。他经常浮到水面上晒月亮,唱歌吸引荧光,但不知道为什么要这样做。他的行为是本能的。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 阿里云虚拟主机安装多个织梦系统的方法
    本文介绍了在阿里云虚拟主机上安装多个织梦系统的方法。通过创建不同名称的文件夹并将不同的域名解析到对应的目录,可以实现多个系统的安装。在安装过程中需要注意修改数据库前缀,并在系统设置中还原数据库。同时还介绍了阿里云虚拟主机二级域名绑定二级目录和域名重定向的用法。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文介绍了一种处理AJAX操作授权过期的全局方式,以解决Asp.net MVC中Session过期异常的问题。同时还介绍了基于WebImage的图片上传工具类。详细内容请参考链接:https://www.cnblogs.com/starluck/p/8284949.html ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
author-avatar
手机用户2502855967
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有