当前位置: 首页 > news >正文

【数据结构的——红黑树】

目录

  • 一、红黑树简介
  • 二、红黑树的特性
  • 三、2-3-4树与红黑树的等价关系
  • 四、红黑树的操作
    • 4.1、旋转操作
    • 4.2、红黑树的插入
      • 4.2.1、情形一
      • 4.2.2、情形二
      • 4.2.3、情形三
      • 4.2.4、情形四
      • 4.2.5、情形五
      • 4.2.6、情形六
      • 4.2.7、对插入进行小结
    • 4.3、红黑树的删除
      • 4.3.1、情形一
      • 4.3.2、情形二
      • 4.3.3、情形三
      • 4.3.4、情形四
  • 五、红黑树与AVL区别总结
  • 六、工具

一、红黑树简介

红黑树是一种自平衡的二叉查找树,是一种高效的查找树,可以在 O ( l o g 2 n ) O(log_{2}n) O(log2n)时间内完成查找、增加和删除等操作。

有了二叉搜索树,为什么需要平衡二叉树?

对于二叉搜索树,如果插入的数据是随机的,那么它就是接近平衡的二叉树,平衡二叉树(AVLTree)的操作效率较高,查增删的时间复杂度都是 O ( l o g 2 n ) O(log_{2}n) O(log2n)。但是当插入的数据有序时,二叉搜索树的结点就会只在根结点的一侧,就变成了一个链表,操作效率也因此变低,时间复杂度变为了 O ( n ) O(n) O(n)平衡二叉树的出现正是为了应对这种极端情况。

那么有了平衡二叉树,为什么还需要红黑树呢?

  • 红黑树是具备了某些特性的二叉搜索树,是一种接近平衡的二叉树,说其接近平衡是因为红黑树没有像AVL树中平衡因子的概念,它只是靠着满足红黑结点的5条性质来维持接近平衡的结构,并没有依靠平衡因子来维持绝对平衡
  • 每次对AVL进行插入(删除)时,几乎都需要通过旋转类保持平衡,在频繁进行插入(删除)的场景中,AVL的性能就大打折扣。而红黑树通过牺牲严格的平衡,换取插入(删除)时少量的旋转操作,整体性能优于AVL。
  • 在进行插入操作时,红黑树最多旋转两次就能回到平衡;进行删除操作时,最多进行三次旋转就能回到平衡。
  • 即使在最坏情况下,也能在 O ( l o g 2 n ) O(log_{2}n)

相关文章:

【数据结构的——红黑树】

目录 一、红黑树简介二、红黑树的特性三、2-3-4树与红黑树的等价关系四、红黑树的操作4.1、旋转操作4.2、红黑树的插入4.2.1、情形一4.2.2、情形二4.2.3、情形三4.2.4、情形四4.2.5、情形五4.2.6、情形六4.2.7、对插入进行小结4.3、红黑树的删除4.3.1、情形一4.3.2、情形二4.3.…...

第十二章:设置pod和容器权限-保障集群内节点和⽹络安全

本章内容包括: 在pod中使用宿主机节点的默认Linux命名空间以不同用户身份运行容器运行特权容器添加或禁用容器内核功能定义限制pod行为的安全策略保障pod的网络安全 谈到了如何保障API服务器的安全。如果攻击者获得了访问API服务器的权限,他们可以通过在…...

灵途科技再度入选2024年度“光谷瞪羚”企业名单!

今年5月,东湖高新区启动了2024年度“光谷瞪羚”企业认定工作,共有549家企业拟被认定为“光谷瞪羚”企业。作为泛自动驾驶领域光电感知专家,灵途科技凭借其快速成长、强大创新能力和巨大发展潜力,再次获得“光谷瞪羚”企业的荣誉。…...

Centos7.6配置阿里云镜像源

1、备份本地镜像源,将/etc/yum.repos.d/下所有文件备份到/etc/yum.repos.d/bak/下 2、下载阿里云镜像 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 3、清除yum缓存-yum clean all 4、验证镜像源仓库 yum repolist...

梨子的功效与作用 梨子生吃熟吃功效竟大不同

梨,这一寻常的水果,因其独特的口感和丰富的营养价值,深受人们的喜爱。梨子不仅味道甜美,而且具有多种功效与作用,无论是生吃还是熟吃,都能给人体带来诸多益处。然而,你是否知道,生吃…...

北斗三号5G遥测终端机系统在水库大坝安全监测应用

一、概述 我国现有水库大坝9.8万余座,是世界上拥有水库大坝最多的国家。这些水库大坝在防洪、发电、供水、灌溉等方面发挥巨大效益的同时,所存在的安全风险不容忽视。大坝安全监测是大坝安全管理的重要内容,是控制大坝风险的重要措施。大坝安…...

代码随想录算法训练营第五十一天|99.岛屿数量 深搜 、99.岛屿数量 广搜、岛屿的最大面积

#99. 岛屿数量 深度优先搜索: 每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 本题思路:用遇到一个没有遍历过的节点陆地,计数器就加一,然后把该节点陆地所能遍历到的陆地都标记上。在遇到标记过的陆地节点和海洋…...

【c++刷题笔记-图论】day62:Floyd 算法、A * 算法精讲

Floyd 算法 重点&#xff1a;多源最短路径算法&#xff0c;前的最短路径算法是单源的也就是只有一个起点。递推每个节点之间最短的路径 时间复杂度&#xff1a; O(n^3)空间复杂度&#xff1a;O(n^2) #include <iostream> #include <vector> using namespace std…...

FPGA知识基础之--clocking wizard ip核的使用以及modelsim与vivado联合仿真

目录 前言一、ip核是什么&#xff1f;1.1 定义1.2 分类 二、为什么使用ip核2.1 ip核的优点2.2 ip核的缺点 三、如何使用ip核&#xff08;vivado&#xff09;四、举例&#xff08;clocking wizard ip核&#xff09;4.1 简介4.2 实验任务4.3 程序设计4.3.1 系统模块4.3.2 波形绘制…...

Java中的分布式日志与追踪

随着微服务架构的流行&#xff0c;分布式系统变得越来越复杂。在分布式系统中&#xff0c;日志和追踪是两个关键的工具&#xff0c;用于监控系统的健康状态、故障排除和性能优化。本文将详细探讨Java中的分布式日志与追踪&#xff0c;介绍相关的技术和工具&#xff0c;并通过代…...

案例精选 | 某省级妇幼保健院自动化安全运营中心建设成功实践

某省级妇幼保健院&#xff0c;是一所集医疗、保健、教学、科研、预防、康复于一体的省级三级甲等妇幼保健机构&#xff0c;专注于为全省妇女儿童提供全方位、高质量的医疗保健服务。医院拥有4个院区&#xff0c;总建筑面积10万平米&#xff0c;开放床位700张&#xff0c;年门诊…...

数字化时代:传统行业的转型之路在何方?

​在当前数字化时代的浪潮中&#xff0c;传统行业面临着新挑战与新机遇。为了在激烈的市场竞争中立足并谋求发展&#xff0c;传统行业的运营必须积极拥抱数字化转型。蚓链数字化解决方案帮助你总结如下。 数字化思维&#xff1a;开启转型之门的钥匙 数字化思维是传统行业转型的…...

【STM32系统】基于STM32设计的按键PWM控制舵机窗帘柜子门禁家居等控制系统——文末资料下载

演示视频 基于stm32设计的按键PWM控制舵机窗帘&柜子&门禁&家居等控制系统——完整资料下载 摘要 随着智能家居技术的不断发展&#xff0c;舵机在自动化家居设备中的应用变得越来越广泛。本文设计并实现了一种基于STM32单片机的按键PWM控制舵机系统。通过按键可以精…...

【生成式人工智能-八-大型语言模型的能力评估】

语言模型的能力评估 评估难度来自哪里输出没办法确定给出选择题本身就没标准答案 评估方法人力用语言模型来评估语言模型语言模型的偏爱 评估语言模型的数据集评估模型的不同能力阅读长文的能力心智测验道德性测试安全性测试 通常情况下我们想到的语言模型能力评估&#xff0c;…...

Qt ts文件详解

Qt ts文件&#xff08;Translation Source file&#xff1a;翻译源文件&#xff09;是Qt框架中用于存储翻译文本和相关上下文信息的一种特定格式文件&#xff0c;它是Qt Linguist&#xff08;语言家&#xff09;工具使用的基础。Qt Linguist是Qt开发工具包中的一个应用程序&…...

操作系统 IO 相关知识

操作系统 IO 相关知识 阻塞与非阻塞同步与异步IO 和系统调用传统的 IODMAmmap 内存映射sendfilesplice 常用的 IO 模型BIO&#xff1a;同步阻塞 IONIO&#xff1a;同步非阻塞 IOIO 多路复用信号驱动 IOAIO&#xff1a;异步 IO 模型 IO 就是计算机内部与外部进行数据传输的过程&…...

C++_手写share_ptr

以下是一个简化版的 shared_ptr 的实现&#xff1a; #include <iostream> template <typename T> class SimpleSharedPtr { public:// 构造函数explicit SimpleSharedPtr(T* ptr nullptr) : ptr_(ptr), count_(ptr ? new size_t(1) : nullptr) {}// 拷贝构造函数…...

【启明智显方案分享】6.86寸高清显示屏音频效果器解决方案

一、项目概述 本方案旨在设计一款集成6.86寸高清触摸显示屏的音频效果器&#xff0c;通过HMI&#xff08;Human-Machine Interface&#xff09;芯片Model 4驱动&#xff0c;实现高清晰度的视觉交互。该设备不仅支持音乐、麦克风及温响音量的精细控制&#xff0c;还内置丰富的预…...

vue设置每次加载页面时展示一个双开门效果

一、首先创建一个双开门的蒙层组件 <!-- DoorOverlay.vue --> <template><div v-if"isVisible" class"door-overlay"><div class"door left-door"></div><div class"door right-door"></div&…...

简单的docker学习 第8章 docker常用服务安装

第8章 常用服务安装 本章主要学习最常用的&#xff0c;也是安装起来稍有些麻烦的 MySQL 与 Redis 两种服务器的Docker 安装。至于其它服务器的 Docker 安装&#xff0c;大家可自行查找资料。只要 MySQL 与 Redis这两类服务器学会了安装&#xff0c;其它服务器的安装基本也不会…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...