Red-Black Tree红黑树

news2025/1/20 5:54:31

红黑树特点:

        1.根节点必须为黑色;

        2.每个节点到子节点经过相同数目的黑色节点;

        3.红色节点的子节点必须是黑色;

        4.空指针也作为节点

红黑树如何插入新的节点?

        1.如果是空树,插入新的黑色节点作为根节点;

        2.如果不为空,插入一个新的红色节点;

        3.如果父节点是黑色则不管;

        4.如果父节点的颜色是红色,他也是红色,那么执行重新着色,并检查新节点的父节点,如果它不是根节点,那么重新着色,父节点变黑色;

        5.如果父亲颜色是红色,父亲的兄弟节点是空或黑色,则需要旋转变色;|Height(RightTree)-Height(LeftTree)|<=1;不满足条件,所以该进行左下旋、右下旋、LR先左上旋再右下旋、RL先右上旋再左下旋

        6.父节点为红色,子节点为红色,如果不是根节点,则重新着色

红黑树与平衡二叉树使用场景:

        大量的增删操作,搜索较少可以使用红黑树;

        大量的搜索,较少的增删操作可以使用平衡二叉树;
 

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

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

相关文章

Wine 8.14 开发版正式发布

Wine 8.14 最新开发版已正式发布。 Wine (Wine Is Not an Emulator) 是一个能够在多种兼容 POSIX 接口的操作系统&#xff08;诸如 Linux、macOS 与 BSD 等&#xff09;上运行 Windows 应用的兼容层。它不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑&#xff0c;而是将 …

2023-9-10 Nim游戏

题目链接&#xff1a;Nim游戏 #include <iostream> #include <algorithm>using namespace std;int main() {int n;cin >> n;int res 0;while(n--){int x;cin >> x;res ^ x;}if(res) cout << "Yes" << endl;else cout << …

SICTF-2023-Crypto

文章目录 古典大杂烩RadioMingTianPaoeasy_coppersmith签到题来咯&#xff01;small_eeasy_math 古典大杂烩 题目描述&#xff1a; &#x1f429;&#x1f443;&#x1f42a;&#x1f43c;&#x1f445;&#x1f42f;&#x1f429;&#x1f448;&#x1f447;&#x1f46d;&a…

基于SSM的电子竞技管理平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

自学移动端(APP)自动化测试

国庆已经过去了&#xff0c;新的一周已经开始了&#xff0c;各地疫情又开始出现复发了&#xff0c;我们能做的就是做好个人防护、去哪报备、到哪扫码亮码、主动做核酸、随时做好家里存储至少一周的食物&#xff0c;拒绝过度防疫&#xff0c;拒绝过度恐慌&#xff0c;拒绝过度焦…

linux Nginx+Tomcat负载均衡、动静分离

linux NginxTomcat负载均衡、动静分离 1、Tomcat的基本介绍1.1Tomcat是什么&#xff1f;1.2Tomcat的构成组件1.3Tomcat的核心功能1.4Tomcat请求过程 2、Tomcat部署2.1安装tomcat2.2优化tomcat启动速度2.4主要目录说明 3、Tomcat 虚拟主机配置3.1创建fsj和mws项目目录和文件3.2修…

【操作系统】聊聊内存中的cache和buffer

通过free命令&#xff0c;可以查看buff/cache使用了368MB内存。从字面上理解cache是缓存&#xff0c;buffer是缓冲区。那么具体有什么含义呢&#xff1f; free数据来源 通过man free 可以看到 free的 buffer/cache 来自/proc/meminfo buffers &#xff1a;内核缓冲区cache …

创建数据库

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: create database 数据库名称 charset 字符集; 其中: create: 创建 database: 数据库 charset: 字符集 说明: 常见的字符集:utf8(最常用…

SLAM论文详解(5) — Bundle_Adjustment_LM(BALM)论文详解

目录 1 摘要 2 相关工作 3 BA公式和导数 A. 直接BA公式 B. 导数 C. 二阶近似 4 自适应体素化 5. 将BALM结合进LOAM 6. 实验 7. 算法应用场景解析 1 摘要 Bundle Adjustment是一种用于同时估计三维结构和传感器运动运动的优化算法。在视觉SLAM&#xff0c;三维重建等…

Spring AOP使用指南: 强大的面向切面编程技术

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

C++this指针

本文旨在讲解C中this关键字&#xff0c;以及其相关作用&#xff01; 定义 this 是 C 中的一个关键字&#xff0c;也是一个 const 指针&#xff0c;它指向当前对象&#xff0c;通过它可以访问当前对象的所有成员。 this的介绍 下面来看一下关于this这个关键字的实例&#xff0…

光刻机巨头CEO称孤立中国没有希望

大家好&#xff01; 我是老洪。 刚看到一个资讯。 光刻机巨头阿斯麦CEO&#xff1a;孤立中国没有希望&#xff0c;他们会提出我们没想到的解决方案。 “中国有14亿人&#xff0c;其中很多人都很聪明。他们会提出我们还没想到的解决方案。你在迫使他们变得非常创新。”温彼得认为…

指针数组与数组指针的区别

文章目录 一、指针概念二、指针1.0、字符指针2.0、指针数组与数组指针 总结 一、指针概念 内存会划分为一个个内存单元&#xff0c;指针是内存中一个最小单元的编号&#xff0c;也就是地址。平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放内存地址的…

漏洞发现-API接口服务之漏洞探针类型利用修复(45)

这里能探针到开放的端口&#xff0c;可以判断出端口的所属类型&#xff0c;这里涉及到证明检测&#xff0c;然后是证明利用可以对端口进行攻击&#xff0c; 端口服务开发这个端口&#xff0c;可以对这个端口进行攻击的。 apl接口&#xff0c; 主要针对应用上面的接口&#xff…

C++斩题录|递归专题 | leetcode50. Pow(x, n)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

Autojs 小游戏实践-神农百草园

概述 最近一直再写刷视频软件脚本&#xff0c;比如手机视频软件太多&#xff0c;每天都需要手动提现羊毛&#xff0c;太累&#xff0c;使用使用Autojs来帮助我提现&#xff0c;签到&#xff0c;扯远了&#xff0c;因为做刷视频脚本感觉有点无聊&#xff0c;所以试着做小游戏找…

机器学习---决策树分类代码

1. 计算数据集的香农熵 from numpy import * import numpy as np import pandas as pd from math import log import operator #计算数据集的香农熵 def calcShannonEnt(dataSet): numEntrieslen(dataSet) labelCounts{} #给所有可能分类创建字典 for featVec …

SimpleCG绘图函数(10)--基础参数属性设置函数

在前面的绘画过程中,我们已经使用过设置线条颜色等函数。本篇我们来系统讲解绘图属性的设置函数。 一、边框线条参数属性 //设置当前设备线条颜色。 COLORREF setlinecolor( COLORREF nColor ); //设置当前设备线条宽度。 int setlinewidth( int nWidth ); //设置当前设备线条…

安卓绘制原理之 那些年遇到的requestLayout埋下的坑

需要了解的知识&#xff1a;安卓绘制原理概览_油炸板蓝根的博客-CSDN博客 对于调用过requestLayout的View&#xff0c;PFLAG_FORCE_LAYOUT标记在requestLayout之后&#xff0c;onLayou完成之前都是一直存在的&#xff1b;对于ViewGroup而言&#xff0c;layout children都是在on…

Linux ipc通信(消息对列)

前言&#xff1a;消息队列也是linux开发ipc机制中较为重要的一个进程间通信机制。 1.系统创建或获取消息对列 int msgget(key_t key, int mode); 创建消息队列&#xff0c;或者获取消息队列。 参数&#xff1a; key - 使用ftok()获取到的key mode - IPC_CREAT|0666 返回&…