[温故] 红黑树算法

前言

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

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

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

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

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

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

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

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

红黑树算法

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

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

参考:

  • TreeMap_implementing_RBTree_python

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

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

相关文章

C语言--2048小游戏

需要用到EasyX图形库 #include <stdio.h> #include <stdlib.h> #include <time.h> #include<assert.h> #include <conio.h> #include <windows.h> #include<graphics.h> #include<string.h> #define ROW 4 /* 行数 */ #defin…

Rust面试宝典第2题:逆序输出整数

题目 写一个方法&#xff0c;将一个整数逆序打印输出到控制台。注意&#xff1a;当输入的数字含有结尾的0时&#xff0c;输出不应带有前导的0。比如&#xff1a;123的逆序输出为321&#xff0c;8600的逆序输出为68&#xff0c;-609的逆序输出为-906。 解析 这道题本身并没有什么…

PostgreSQL入门到实战-第二十一弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(五)官网地址PostgreSQL概述PostgreSQL中RIGHT JOIN命令理论PostgreSQL中RIGHT JOIN命令实战更新计划 PostgreSQL中表连接操作(五) 使用PostgreSQL RIGHT JOIN连接两个表&#xff0c;并从右表返回行 官网地址 声明: 由于操作系统…

打印机共享设置助手

工作中经常设置共享打印机&#xff0c;为简化操作编写了此打印机设置助手运行环境&#xff1a; 支持Windows 7以上系统直接运行Windows 7 使用PrinterTool_NET20版本Windows 10以上 使用PrinterTool_NET452版本 软件功能&#xff1a; 设置默认打印机设置共享打印机快捷连接共…

微软Office吊打WPS ?不一定,WPS未来被它“拿捏”了

微软Office Plus吊打WPS Office&#xff1f; 微软的Office套件在全球范围内内享有盛誉&#xff0c;其强大的功能和广泛的应用场景使其在办公、娱乐乃至生活的各个角落都显得不可或缺。 而与之相对&#xff0c;WPS Office作为国内办公软件的佼佼者&#xff0c;与微软的较量已历…

探新路建“枢纽” 湖南深耕中非经贸合作“试验田”

湖南作为中国与非洲经贸合作的重要窗口&#xff0c;积极推动中非经贸关系的发展和深化。通过构建覆盖全产业链的高效运作模式&#xff0c;湖南企业能够在一周内将肯尼亚干制鳀鱼加工成为麻辣鲜香的劲仔深海小鱼并投入中国市场。此外&#xff0c;湖南还致力于推动非洲优质农产品…

gitee和idea集成

1 集成插件 2 配置账号密码 3 直接将项目传到仓库 4直接从gitee下载项目

题目:斤斤计较得小Z(蓝桥OJ 2047)

问题描述&#xff1a; 题解&#xff1a; 做法一&#xff08;kmp模板&#xff09;&#xff1a; #include <bits/stdc.h> using namespace std;const int N 1e6 9; char s[N], p[N]; int nex[N];int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);// p: 子…

Stable Diffusion——SDXL Turbo让 AI 出图速度提高10倍

摘要 在本研究中&#xff0c;我们提出了一种名为对抗扩散蒸馏&#xff08;ADD&#xff09;的创新训练技术&#xff0c;它能够在1至4步的采样过程中&#xff0c;高效地对大规模基础图像扩散模型进行处理&#xff0c;同时保持图像的高质量。该方法巧妙地结合了分数蒸馏技术&…

记录linux从0部署java项目(宝塔)

目录 一、安装宝塔可视化界面 二、部署前端 三、部署后端 1、配置并连接Mysql数据库 2、配置并连接redis 3、安装jdk 这里先记录一个安装后遇到的问题 安装openJDK 四、检查 一、安装宝塔可视化界面 宝塔面板下载&#xff0c;免费全能的服务器运维软件 运行安装脚本 安…

【爬虫开发】爬虫从0到1全知识md笔记第5篇:Selenium课程概要,selenium的其它使用方法【附代码文档】

爬虫开发从0到1全知识教程完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;爬虫课程概要&#xff0c;爬虫基础爬虫概述,,http协议复习。requests模块&#xff0c;requests模块1. requests模块介绍,2. response响应对象,3. requests模块发送请求,4. request…

【JAVA基础篇教学】第一篇:Java基础数据类型

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第一篇&#xff1a; Java基础数据类型。 在Java中&#xff0c;数据类型是用来指定变量存储数据的类型。Java的数据类型可以分为两大类&#xff1a;原始数据类型&#xff08;Primitive Data Types&#xff09;和引用数据类型…

黄金基金和黄金有什么区别?

黄金基金本质上是一种投资工具&#xff0c;它通过间接投资黄金或与其紧密相关的金融衍生品来反映黄金市场的表现。不同于直接持有实物黄金&#xff0c;投资者购买黄金基金并不涉及实体黄金的保管问题&#xff0c;而是将资金交由专业的基金管理人管理&#xff0c;由他们代表投资…

流程图的新语法-mermaid的快速使用--推荐

chatgpt或者现在的大数据采用的流程图给出的代码如下&#xff1a; graph TD;A[接收客户请求] --> B[问题分类];B --> C[技术支持];B --> D[维修服务];C --> E[远程解决];C --> F[现场支持];D --> G[维修完成];G --> H[服务反馈];style A fill:#f9f,strok…

IO流(字节流、字符流)

一、IO概述 1&#xff0e;什么是IO流? 存储和读取数据的解决方案l: inputo: output流∶像水流一样传输数据 2.IO流的作用? 用于读写数据&#xff08;本地文件&#xff0c;网络) 3.IO流按照流向可以分类哪两种流? 输出流:程序 - > 文件 输入流:文件 - > 程…

【解决】安装模块时报错:ERROR: *.whl is not a valid wheel filename.

其实错误信息已经告诉你了&#xff0c;就是你的文件名有问题。在你下载whl文件时一定要注意原文件的文件名&#xff0c;不要改动文件名。 以我安装pandas模块为例吧。 在我下载whl文件时&#xff0c;因为网速太慢&#xff0c;我就下载了多次&#xff0c;导致文件名变成了这个…

ssm044基于java和mysql的多角色学生管理系统+jsp

学生管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本学生管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处…

【汇编】计算机系统构成

计算机系统构成 计算机系统包括硬件和软件两部分 硬件 典型的计算机结构包括 中央处理器(CPU)、存储器和输入输出(I/O)子系统 三个主要组成部分&#xff0c;用系统总线把它们连接在一起 计算机硬件组成与各部分之间的联系 软件 计算机软件可以分为系统软件和用户软件两大类 …

如何查找下载国外博士论文

查找国外博士论文可以去ProQuest学位论文全文数据库&#xff0c;ProQuest学位论文全文数据库&#xff0c;是将ProQuest公司PQDD文摘库&#xff08;现名PQDT&#xff09;中适合中国科研人员科研和教学使用的论文全文建设而成&#xff0c;并向全国百数家科研教学单位的读者提供全…

【数据结构与算法】贪心算法及例题

目录 贪心算法例题一&#xff1a;找零问题例题二&#xff1a;走廊搬运物品最优方案问题输入样例例题三&#xff1a;贪心自助餐 贪心算法 贪心算法是一种在每一步选择中都采取当前状态下最优的选择&#xff0c;以期望最终达到全局最优解的算法。它的核心思想是每次都选择当前最…