12.15_黑马数据结构与算法笔记Java

目录

144 avl树 balance

145 avl树 put

146 avl树 remove

147 红黑树 概述

148 红黑树 put case1-3

149 红黑树 put case4

150 红黑树 remove case0-1

151 红黑树 remove case2

152 红黑树 remove case3

153 红黑树 remove case4

154 红黑树 remove case5

155 红黑树 remove 演示

156 B树 历史

157 B树 特性

158 B树 节点类1

159 B树 节点类2

160 B树 contains

161 B树 put

162 B树 split 分析

163 B树 split 实现

164 B树 split 非叶子和根

165 B树 split 测试

166  B树 put结合split


144 avl树 balance

 新增的时候不需要加=号,删除的时候需要。为了解决以上的例子。

145 avl树 put

昨天做了很多伪递归的演示,遂我们知道,这里return回来的东西就是doPut()这东西的返回值,这个return回来的东西要和树建立连接,因为是在node的左边进行查找,那自自然就是连接node的左手。 

146 avl树 remove

147 红黑树 概述

我们什么时候考虑null值,就是发现,有左孩子却没有右孩子的时候,要把另外一个兄弟也加进来。 

小妙招:

如果叶子节点,就是最下面的这个点如果是黑色的,一定要成对出现,如果是红色的,那一定是对的。 

parent.isLeftChild:父亲是不是爷爷的左孩子。 

 

148 红黑树 put case1-3

149 红黑树 put case4

150 红黑树 remove case0-1

准备工作:

李代桃僵方法:不改变其他东西,只改变5和6的值。这样子可以简化代码。

删除的是两个孩子

删除的是没有孩子或者一个孩子,并且删除的是根节点

151 红黑树 remove case2

删除的是没有孩子,且不是根节点的。

那就让它的父母指向null,然后设置它自己的新父母为null,有利于垃圾回收。这说明没有人引用它了,他就会自动被清理掉。

 删除的是有一个孩子的,且不是根节点的。

倒数第二行的代码,几个连等null的代码的意思是:我让要删除的元素和所有人脱掉关系,因此有助于垃圾回收。

现在要考虑平衡的问题了:

删黑色要考虑平衡问题,删红色不需要 

 

152 红黑树 remove case3

 

后面的再次递归,是将case3变成case4

153 红黑树 remove case4

几个例子

 

154 红黑树 remove case5

155 红黑树 remove 演示

156 B树 历史

157 B树 特性

4有两个孩子,也就是度为2 

关键字数就是key,可以有多个。从孩子数推导到关键字数 

158 B树 节点类1

159 B树 节点类2

怎么去看红色框框?

如图举例子,如果要查找的是18,keys【3】(20)>18,说明在第二行

如果要查找的是30,keys【5】(30)已然超过了第一行,说明在第二行

如果是非叶子的情况,则调用孩子来查找,因为比如说那个序号5,第一行是找不到序号5的,但是第二行是有序号5的。 

160 B树 contains

为什么在B树中,2倍树中节点最小度数-1等于最大key数目

在B树中,2倍树中节点的最小度数-1等于最大key数目是因为B树的定义和性质决定的。

B树是一种多路搜索树,它的每个节点可以包含多个子节点和关键字。在B树中,每个节点的关键字数量要满足一定的条件,即最小度数-1到2倍最小度数-1之间。同时,每个节点的子节点数量比关键字数量多1。

当节点的最小度数为t时,根据B树的性质,每个节点至少包含t-1个关键字和最多2t-1个关键字。而2倍树中的节点的最小度数为2t,因此最小度数-1就等于t-1,最大key数目就等于2t-1。

因此,在B树中,2倍树中节点的最小度数-1等于最大key数目是由B树的定义和性质决定的。

最小度数是啥

在B树中,最小度数是指一个节点中包含的最少子节点数。在B树中,每个节点都包含一个关键字和对应的子节点,最小度数规定了节点中子节点的最少数量。对于一个最小度数为t的B树,每个非根节点必须至少包含t个子节点,而根节点至少包含2个子节点。

root就是一个普通的节点 

161 B树 put

162 B树 split 分析

再举一个例子:

163 B树 split 实现

boolean leaf = true;right.leaf = left.leaf;什么意思?

首先,"boolean leaf = true;" 是一个声明语句,它创建了一个名为leaf的布尔变量,并将其赋值为true。这表示leaf变量是一个布尔类型的变量,它的值为true,即表示为叶子节点。

接着是"right.leaf = left.leaf;" 这是一个赋值语句,它将right节点的leaf属性设置为和left节点的leaf属性相同。这意味着right节点的leaf属性将被设置为和left节点相同的布尔值。这可能是在处理树的数据结构时,用来设置节点的属性,以便在树的遍历或搜索过程中进行判断和处理。

index:在那行,你是第几个。

164 B树 split 非叶子和根

 

第二种情况:根节点

165 B树 split 测试

两种测试方式:

1.debug

2.

166  B树 put结合split

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

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

相关文章

技术分享 | app测试中常用的Android模拟器

Emulator Emualor 是 Android Studio 自带的模拟器,是官方提供的工具,Android 开发最常使用的就是这一款。 它功能非常齐全,电话本、通话等功能都可正常使用。用户可以使用键盘输入,鼠标点击模拟器按键输入,甚至还可以…

SuperMap iClient3D for Cesium 实现鼠标移动选中模型并显示模型对应字段

SuperMap iClient3D for cesium 实现鼠标移动选中模型并显示模型对应字段 一、实现思路二、数据制作1. 计算出模型中心点并保存到属性表中2. 计算出模型顶部高程3. 模型数据切缓存4. 发布三维服务. 三、代码编写 作者:xkf 一、实现思路 将模型属性数据存储到前端&a…

cat EOF快速创建一个文件,并写入内容

在linux系统中,如果你有这个需求 vi一个文件 /etc/docker/daemon.json 在这个文件中写入内容 { "registry-mirrors": ["https://iw3lcsa3.mirror.aliyuncs.com","http://10.1.8.151:8082"],"insecure-registries":[&quo…

VRRP协议详解

目录 一、基础概念 1、概念 2、VRRP的基本结构 状态机 二、VRRP主备备份工作过程 1、备份工作过程 2、VRRP的负载分担工作 三、实验 一、基础概念 1、概念 VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的I…

linux应用层编程问题--沙雕问题

1.调用沁恒 USB读取接口 读不到数据 static bool CH37XASyncReadData(int iIndex, uint32_t epindex, void *oBuffer, uint32_t *ioLength) {struct _bulkUp {uint32_t len;uint8_t epindex;uint8_t data[0];} __attribute__((packed));struct _bulkUp *bulkUp;int retval;bul…

docker-compose 升级;yaml文件编写;gpu使用

1、docker-compose 升级(现在已经2.*版本,升级使支持gpu) 参考:https://blog.csdn.net/weixin_51311218/article/details/131376823 https://github.com/docker/compose/issues/8142 1)下载:原来1.18&…

免费下载2G全球250米高程DEM

今天我们再为大家分享全球250米高程数据。 全球250米高程DEM 该数据是基于30米高程重新采样后的数据,在赤道线上的空间分辨率约为250米。 全球250米高程DEM数据共分三幅图,西半球一幅,东半球两幅,南北方向纬度只到60度&#xf…

浅显易懂 @JsonIgnore 的作用

1.JsonIgnore作用   在json序列化/反序列化时将java bean中使用了该注解的属性忽略掉 2.这个注解可以用在类/属性上   例如:在返回user对象时,在pwd属性上使用这个注解,返回user对象时会直接去掉pwd这个字段,不管这个属性有没…

什么是数据可视化?数据可视化的优势、方法及示例

前言 在当今的数字时代,数据是企业和组织的命脉,生成的数据量呈指数级增长。这种被称为大数据的海量数据在洞察力和决策方面具有巨大的潜力。然而,如果没有一种有效的方法来分析和理解这些数据,它就会变得毫无意义和难以管理。这就…

用Excel绘制柱形图

在需要将数据用柱状图表示的时候,可以用Excel进行绘制。不单绘制柱形图,其他数据图也可以用Excel绘制。 接下来用绘制一个销售表的示例演示。 1.将数据输入Excel 数学书 语文书 英语书 一月 80 94 77 二月 95 86 84 三月 130 93 79 四月 …

无需繁琐手工操作,如何利用Web自动化测试元素定位做到快速高效的测试?

1、什么是Web自动化测试元素定位? 在Web自动化测试中,元素定位是非常重要的环节。因为我们需要找到需要进行操作的页面元素,例如按钮、输入框、下拉菜单等等。元素定位可以帮助我们在自动化测试中对这些元素进行操作,如点击、输入…

Etsy运营秘籍——打造大卖店铺的九大技巧

在跨境电商的浩瀚海洋中,Etsy 作为一个注重手工制作与独特设计的平台,吸引了众多卖家的关注。在 Etsy 的世界里,成功运营小店需要更多的智慧和技巧。作为一位在 Etsy 上开店多年的老手,在这过程中也总结了不少经验,这篇…