数据结构学习笔记——查找算法中的树形查找(红黑树)

目录

  • 一、红黑树的定义
    • (一)黑/红结点、叶子节点
    • (二)黑色完美平衡
  • 二、红黑树的性质
    • (一)黑高和高度
    • (二)叶子结点个数
  • 三、红黑树与AVL对比

一、红黑树的定义

红黑树是一棵二叉排序树(满足结点值中:左子树<根结点<右子树),每个结点都带有颜色属性,即黑或红。可以简单地说它是一棵“ 平衡二叉树 ”,但由于它的左、右子树高度差的绝对值有可能超过 1,所以并不是严格意义上的平衡二叉树,只能说是一棵弱平衡二叉树,相对于正常的平衡二叉树,在进行插入、删除操作后二叉树的平衡调整中由于不要求完全平衡,其所需的代价更低。
在这里插入图片描述

(一)黑/红结点、叶子节点

在红黑树中,根结点一定是黑结点,其余结点为黑或红,树中不允许有相邻的两个红结点;另外,树中也存在叶子结点,它是黑结点,是实际意义上不存在的空结点,且任一结点(不包括)到叶子结点的路径上,所经过的黑结点的个数相同,注意叶子结点也算作黑结点计入。
在这里插入图片描述

(二)黑色完美平衡

若红黑树中,左子树和右子树的层数相等,则称为黑色完美平衡,如下:
在这里插入图片描述

二、红黑树的性质

(一)黑高和高度

任意一结点(不包括)到叶子结点所经过的黑结点的个数称为该结点的黑高,而根结点的黑高即为红黑树的高度,黑高用bh表示,例如,下图这棵红黑树的高度即为根结点3的黑高,即bh=2:
在这里插入图片描述
由于根结点到叶子结点的最长路径不大于最短路径的两倍,且至少有一半结点为黑结点,即树的黑高至少为h/2,所以对于一个含有n个结点的红黑树,其高度为h ≤ 2log2(n+1),即最大高度为2log2(n+1)。

(二)叶子结点个数

红黑树中,叶子结点(空结点)与二分判定树和B树中的外部结点相同,都不是实际存在的结点,是虚构的。若红黑树的结点总数为n,则外部结点的个数为n+1
在这里插入图片描述

三、红黑树与AVL对比

与平衡二叉树(AVL)相比,红黑树只追求大致上的平衡,通过引入红、黑颜色属性以及相应的规则来保证平衡性,所以红黑树在插入和删除结点时只需进行少量的颜色调整和旋转操作,从而比AVL实现更简便,而AVL必须遵从严格的平衡条件,使得在进行插入和删除结点操作后需要多次旋转调整来保证平衡,可能会增加操作的时间复杂度。另外,AVL与红黑树相同,两者查找、插入和删除操作的时间复杂度均为O(log2n)。

由于每一棵红黑树都是一颗二叉排序树,因此,在对红黑树进行查找时,可以采用运用于普通二叉排序树上的查找算法,在查找过程中不需要颜色信息。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【OpenGauss源码学习 —— 执行器(execMain)】

执行器&#xff08;execMain&#xff09; 概述文件内容作用执行的操作主要函数概述 部分函数详细分析ExecutorStart 函数standard_ExecutorStart 函数 ExecutorRun 函数standard_ExecutorRun 函数 ExecutorFinish 函数standard_ExecutorFinish 函数 ExecutorEnd 函数standard_E…

数据库单表查询

1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表&#xff0c;名为工作日期表…

基于PyQT的图片批处理系统

项目背景&#xff1a; 随着数字摄影技术的普及&#xff0c;人们拍摄和处理大量图片的需求也越来越高。为了提高效率&#xff0c;开发一个基于 PyQt 的图片批处理系统是很有意义的。该系统可以提供一系列图像增强、滤波、水印、翻转、放大缩小、旋转等功能&#xff0c;使用户能够…

单容水箱液位定值控制实验

实验1 单容水箱液位定值控制实验 一、实验目的 1、通过实验熟悉单回路反馈控制系统的组成和工作原理。 2、分析分别用P、PI和PID调节时的过程图形曲线。 3、定性地研究P、PI和PID调节器的参数对系统性能的影响。 二、实验设备 A3000现场系统&#xff0c;任何一个控制系统…

Java项目:03 基于Springboot的销售培训考评管理系统

项目介绍 企业的销售要进行培训&#xff0c;由技术人员进行辅导并考评检测培训效果&#xff0c;所以有了这个小系统。实现了系统的登录验证、请求拦截验证、基础模块&#xff08;用户管理、角色管理、销售管理&#xff09;、业务模块&#xff08;评分管理、评分结果&#xff0…

springboot 企业微信 网页授权

html 引入jquery $(function () {// alert("JQ onready");// 当前企业的 corp_idconst corp_id xxxxxx;// 重定向 URL → 最终打开的画面地址&#xff0c;域名是在企业微信上配置好的域名const redirect_uri encodeURI(http://xxxxx.cn);//企业的agentId 每个应用都…

基于SpringBoot的房屋交易平台的设计与实现

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一 、设计说明 1.1 研究背景 互…

Nightingale 夜莺监控系统 - 部署篇(1)

Author&#xff1a;rab 官方文档&#xff1a;https://flashcat.cloud/docs 目录 一、概述二、架构2.1 中心机房架构2.2 边缘下沉式混杂架构 三、环境四、部署4.1 中心机房架构部署4.1.1 MySQL4.1.2 Redis4.1.3 Prometheus4.1.4 n9e4.1.5 Categraf4.1.6 验证4.1.7 配置数据源 4…

安装、运行和控制AI apps在您的计算机上一键式

pinokio 你是否曾为安装、运行和自动化 AI 应用程序和大模型而感到困惑&#xff1f;是否希望有一个简单而强大的工具来满足你的需求&#xff1f;如果是这样&#xff0c;那么 Pinokio 将会是你的理想选择&#xff01;Pinokio 是一款革命性的人工智能浏览器&#xff0c;是一个开…

专业课140+总分410+电子科技大学858信号与系统考研经验,电子信息通信

我的初试备考从4月末&#xff0c;持续到初试前&#xff0c;这中间没有中断。 我是二战考生&#xff0c;准备的稍微晚一些&#xff0c;如果是一战考生&#xff0c;建议在2、3月份开始。 总的时间分配上&#xff0c;是数学>专业课>英语>政治&#xff0c;虽然大家可支配…

Python如何免费调用微软Bing翻译API

一、引言 现在免费的机器翻译越来越少了&#xff0c;随着有道翻译开始收费&#xff0c;百度降低用户的免费机器翻译额度(目前只有实名认证过的高级用户才能获得100万字符的免费翻译额度)&#xff0c;而亚马逊、腾讯等机器翻译调用相对比较麻烦&#xff0c;需要下载各种插件包&…

【代码随想录05】242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

目录 242.有效的字母异位词题目描述做题思路参考代码 349. 两个数组的交集题目描述做题思路参考代码 202. 快乐数题目描述做题思路参考代码 1.两数之和题目描述参考代码 242.有效的字母异位词 题目描述 给定两个字符串 *s* 和 *t* &#xff0c;编写一个函数来判断 *t* 是否是…

使用swift创建第一个ios程序

一、安装xcode 先到app store中下载一个Xcode app 二、创建项目 1、项目设定 创建ios app 2、工程结构 三、修改代码实现按键联动 四、运行测试

时序预测 | MATLAB实现GRNN广义回归神经网络时间序列未来多步预测(程序含详细预测步骤)

时序预测 | MATLAB实现GRNN广义回归神经网络时间序列未来多步预测(程序含详细预测步骤) 目录 时序预测 | MATLAB实现GRNN广义回归神经网络时间序列未来多步预测(程序含详细预测步骤)预测效果基本介绍程序设计参考资料预测效果 基本介绍 MATLAB实现GRNN广义回归神经网络时间序列…

【Windows】基于Hyper-V安装Ubuntu虚拟机

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍基于Hyper-V安装Ubuntu虚拟机。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新…

使用kibana来创建ElasticSearch的索引库与文档的命令

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;使用kibana来为ElasticSearch创建索引库&#x1f380;使用kibana来为ElasticSearch创建修改文档 &#x1f412;个人主页 &#x1f3c5;JavaEE系列专栏 &#x1f4d6;前言…

粒子群算法优化RBF神经网络回归分析

目录 完整代码和数据下载链接:粒子群算法优化RBF神经网络回归分析(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88738570 RBF的详细原理 RBF的定义 RBF理论 易错及常见问题 RBF应用实例,基于rbf的空调功率预测 代码 结果分析 展望…

MySQL-多表连接查询

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

行为型设计模式——中介者模式

中介者模式 中介者模式主要是将关联关系由一个中介者类统一管理维护&#xff0c;一般来说&#xff0c;同事类之间的关系是比较复杂的&#xff0c;多个同事类之间互相关联时&#xff0c;他们之间的关系会呈现为复杂的网状结构&#xff0c;这是一种过度耦合的架构&#xff0c;即…

二、MySQL安装

目录 1、双击mysql8的安装向导 2、分为首次安装和再安装 1&#xff09;、首次安装 &#xff08;1&#xff09;如果是首次安装mysql系列的产品&#xff0c;需要先安装mysql产品的安装向导 &#xff08;2&#xff09;选择安装模式 2&#xff09;、不是首次安装 &#xff0…