[温故] 红黑树算法

news2024/11/26 11:36:20

前言

最近在突然想起一些基础的东西, 向着温故知新, 有了些新的感悟和大家分享一下.

排序算法是数据结构的一个重要组成部分, 当时学习的时候没有少折腾, 这里来看看大佬们怎么运用这些数据结构来构建庞大的计算机体系的.

二叉树是排序算法的一个衍生, 基于二叉树的构建不同, 有完全树, RB树, B+树等.

我们把一颗有序的树压平, 其实就是一个队列.

为啥要有二叉树呢, 其实要从二分查找说起, 我们在二分查找的时候, 很快遍历到我们想要的结果.

我们回忆一下, 二分是怎么二分的, 我们要先知道队列的总数, 然后查看其二分之一长度的元素值和我们目标数字的大小, 小的在左边, 大的在右边.

这种二分查找法和完全二叉树有异曲同工之妙. 而且完全二叉树不需要知道队列的总长度, 根据节点的左右节点的信息就可以递归找到目标节点. 而且相比队列, 二叉树的增删维护要方便很多, 不用大面积的移动内存, 只需要简单的修改链表节点信息即可.

今天我温故了红黑树, 好像和书上讲的不一样, 也不晓得正确不, 不过要简单一些, 所以分享出来, 下面是我的理解:

红黑树算法

增: 注意两红相遇, 上红变黑, 旁支为红变黑, 旁支为黑就转向, 直到不冲突为止.

删: 找到左边最大的值, 替换当前节点, 转换为删叶子节点, 如果替换的叶子节点是黑就需要进行修正.
删除叶子节点的修正方法: 上变黑, 旁变红, 两红相遇就上移旁红, 继续旁边红, 直到旁边不冲突为止.
在这里插入图片描述
删9: 找到左边最大8替换, 8是黑色,需要修正: 8的子树不平衡, 将左10红, 上面的11黑,15红, (遇13,17红), 15上行,17黑.
在这里插入图片描述

参考:

  • TreeMap_implementing_RBTree_python

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

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

相关文章

【路径规划】基于六次多项式的多关节机器人避障路径规划

最近迷上了机械臂避障轨迹规划,因为之前一直做的都是无障碍物轨迹规划,所以这次想试一下有障碍物的,把避障算法用在我的SimMechanics机械臂上,看看效果咋样。以下定义不区分路径规划和轨迹规划。   by the way,本文实…

一种跳板机的实现思路

一、 跳板机思路简介 本文所描述的跳板机(下文称为“jmp”)支持: Linux服务器 Windows服务器 其他终端(MySQL终端、Redis终端、网络设备终端 等等) 有别于市面上常见的jumpserver方案,使用本文所搭建的跳…

CSS实现卡片在鼠标悬停时突出效果

在CSS中,实现卡片在鼠标悬停时突出,通常使用:hover伪类选择器。 :hover伪类选择器用于指定当鼠标指针悬停在某个元素上时,该元素的状态变化。通过:hover选择器,你可以定义鼠标悬停在元素上时元素的样式,比如改变颜色、…

最新PDD批发Anti-Content参数逆向分析与算法还原

文章目录 1. 写在前面2. 接口分析3. 分析与扣代码 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Py…

Java(今天偷懒一丢丢

今天学了一点点io流 基本概念 输入流(InputStream):用于从数据源读取数据。输出流(OutputStream):用于向目标写入数据。 分类 按功能分类 字节流:处理字节数据,如 InputStream 和…

CSS aspect-ratio属性设置元素宽高比

aspect-ratio 是CSS的一个属性&#xff0c;用于设置元素的期望宽高比。它设置确保元素保持特定的比例&#xff0c;不受其内容或容器大小的影响。 语法&#xff1a; aspect-ratio: <ratio>;其中 <ratio> 是一个由斜杠&#xff08;/&#xff09;分隔的两个数字&…

韩顺平 | 零基础快速学Python(12) OOP基础

面向对象编程-基础 类与对象 类提供了把数据和功能绑定在一起的方法。创建新类时创建了新的对象类型&#xff0c;从而能够创建该类型的新实例/对象。 类时抽象的概念&#xff0c;作为数据类型代表一类事物&#xff1b;对象时具体实际的&#xff0c;作为实例代表具体事物&…

【c语言】atoi函数---使用和模拟实现(详解)

atoi函数---使用和模拟实现 atoi函数在Cplusplus中的定义 atoi函数的使用 #include <stdio.h> #include <stdlib.h>int main() {char arr[20] "4831213";int ret 0;ret atoi(arr);printf("arr:%s\n", arr);printf("ret:%d\n", re…

JWT重放漏洞如何攻防?你的系统安全吗?

大家好&#xff0c;我是石头~ 在数字化浪潮席卷全球的今天&#xff0c;JSON Web Token&#xff08;JWT&#xff09;作为身份验证的利器&#xff0c;已成为众多Web应用的首选方案。 然而&#xff0c;正如硬币有两面&#xff0c;JWT的强大功能背后也隐藏着潜在的安全风险&#xf…

手把手教你如何下载学浪上的视频课程

学浪直播课程下载技术尚未攻克&#xff0c;但视频课程下载却易如反掌。 1.首先解压好我给大家准备好的压缩包 学浪下载器链接&#xff1a;https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码&#xff1a;kqvj --来自百度网盘超级会员V10的分享 2.首先解压我…

OpenHarmony编译构建系统

这篇来聊聊OpenHarmony的编译构建&#xff0c;经过前面的实践&#xff0c;再来看编译构建。 编译构建概述 在官网中提到了&#xff0c;OpenHarmony编译子系统是以GN和Ninja构建为基座&#xff0c;对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能…

数据采集仪:自动化监测系统的核心组件

在当代的工业自动化领域&#xff0c;数据采集仪成为了一个关键的技术工具&#xff0c;它不仅仅是简单地将电信号转化为数据信号&#xff0c;而是能够实时、有效地处理和显示各种信号&#xff0c;确保整个监测系统的稳定、高效运行。 点击输入图片描述&#xff08;最多30字&…

计算机网络 子网掩码与划分子网

一、实验要求与内容 1、需拓扑图和两个主机的IP配置截图。 2、设置网络A内的主机IP地址为“192.168.班内学号.2”&#xff0c;子网掩码为“255.255.255.128”&#xff0c;网关为“192.168.班内学号.1”&#xff1b;设置网络B内的主机IP地址为“192.168.班内学号100.2”&#…

JWT详解及实战教程

目录 1.什么是JWT 2.JWT能做什么 3.为什么是JWT 基于传统的Session认证 基于JWT认证 4.JWT的结构是什么? 5.使用JWT 6.封装工具类 7.整合springboot 1.什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way…

CSS-浮动文字环绕布局、隐藏属性display、overflow、三角形制作、鼠标样式

文字环绕布局 CSS文字环绕布局是指在网页中让文字环绕在图片或其他元素周围的布局方式。这通常通过CSS中的float属性来实现。你可以将图片设置为float: left;或float: right;&#xff0c;然后在文本元素中使用clear属性来清除浮动&#xff0c;以确保文字不会覆盖图片。另外&am…

python爬虫-------urllib代理和代理池(第十七天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

介绍一个方便的python包和环境管理软件Anaconda,如何快速安装

为什么要安装Ananconda&#xff1f; Anaconda是一个方便的python包管理和环境管理软件&#xff0c;一般用来配置不同的项目环境。它通过管理工具包、开发环境、Python版本&#xff0c;大大简化了工作流程。不仅可以方便地安装、更新、卸载工具包&#xff0c;而且安装时能自动安…

SpringBoot 微服务token 传递实现

1、前言 随着微服务的流行&#xff0c;微服务之间的安全以及业务需要&#xff0c;都需要穿递token &#xff0c;而token的传递一般通过header 头来传递。从架构的角度来讲 &#xff0c;一般的企业应用都由nginx、业务网关和各个微服务组成。这个nginx 传递header 我就不讲述。下…

伪装目标检测论文阅读之:《Confidence-Aware Learning for Camouflaged Object Detection》

论文地址&#xff1a;link code:link 摘要&#xff1a;   任意不确定性捕获了观测结果中的噪声。对于伪装目标检测&#xff0c;由于伪装前景和背景的外观相似&#xff0c;很难获得高精度的注释&#xff0c;特别是目标边界周围的注释。我们认为直接使用“嘈杂”的伪装图进行训…

分布式系统接口限流方案

Git地址&#xff1a;https://gitee.com/deepjava/test-api-limit.git 方案一、 Guava工具包 实现单机版限流 具体代码见git 方案二、Redis lua脚本 实现分布式系统的接口限流 具体代码见git