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

数据结构(7.3_4)——红黑树的定义和性质

红黑树和平衡排序二叉树的查插删时间

平衡二叉树的适用场景:适用以查为主、很少插入/删除vd场景

红黑树:适用于频繁插入、删除的场景,实用性更强 

红黑树的考点

 

红黑树的定义:

红黑树的二叉排序树左子树结点值<=根结点值<=右子树结点值 

与普通BST相比,有什么要求:

  1. 每个结点或是红色,或是黑色的
  2. 根结点是黑色的
  3. 叶结点(外部结点,NULL结点失败结点)均是黑色的
  4. 不存在两个相邻的红结点(即红结点的父结点和孩子结点均是黑色的)
  5. 对每个结点,从该节点到任一叶结点的简单路径上,所含黑结点的数目相同

口诀:左根右,根叶黑,不红红,黑路同

struct RBnode {//红黑树的结点定义int key;//关键字的指针RBnode* parent;//父节点指针RBnode* lchild, * rchild;//左、右孩子指针int color;//结点颜色}

 实例:

练习:

 

答案:不是红黑树,因为不存在两个相邻的红结点的红黑树

答案:不是,因为根结点是黑色的

答案:不是,因为 对每个结点,从该节点到任一叶结点的简单路径上,所含黑结点的数目相同

 答案:不是,因为红黑树首先必须是棵二叉排序树,违法“左根右”的特性

结点的“黑高” 

结点的黑高bh--从某结点出发(不含该结点)到达任一空叶结点的路径上黑结点总数



红黑树的性质 

  1. 从根结点到叶结点的最长路径不大于最短路径的2倍
  2. 有n个内部结点的红黑树高度 h<2log_2(n+1)
  3. 红黑树查找操作时间复杂度=O(log_2(n+1))

红黑树的查找

与BST、AVL相同,从根出发,左小右大,若查找到一个空叶节点,则查找失败

红黑树的插入 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在MAC中Ollama开放其他电脑访问
  • dict.setdefault() 用法
  • 部署林风社交论坛/社交论坛linfeng-community遇到问题集合
  • hCaptcha 图像识别 API 对接说明
  • 『功能项目』QFrameWorkBug关联Slot(插槽)【67】
  • 一种新的电子邮件攻击方式:AiTM
  • 发展低空经济,对地理信息技术提出了哪些要求
  • Unreal Engine 5 C++: Asset Batch Duplication插件编写02
  • 5.《DevOps》系列K8S部署CICD流水线之K8S通过Yaml部署GitLab
  • VSCode好用的插件推荐
  • 错误码与错误提示设计
  • YOLOv9改进,YOLOv9主干网络为FasterNet(全网独发手把手教学,助力涨点)
  • AUTOSAR_EXP_ARAComAPI的5章笔记(7)
  • 如何创建标准操作规程(SOP)[+模板]
  • 从规范到实现解读Windows平台如何播放RTSP流
  • php的引用
  • 0x05 Python数据分析,Anaconda八斩刀
  • Cookie 在前端中的实践
  • C学习-枚举(九)
  • Debian下无root权限使用Python访问Oracle
  • Java多线程(4):使用线程池执行定时任务
  • js ES6 求数组的交集,并集,还有差集
  • Puppeteer:浏览器控制器
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 栈实现走出迷宫(C++)
  • 字符串匹配基础上
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • Python 之网络式编程
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 阿里云服务器如何修改远程端口?
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​ubuntu下安装kvm虚拟机
  • ‌内网穿透技术‌总结
  • # SpringBoot 如何让指定的Bean先加载
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #{} 和 ${}区别
  • #pragam once 和 #ifndef 预编译头
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)hibernate配置管理
  • (翻译)terry crowley: 写给程序员
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • .cfg\.dat\.mak(持续补充)
  • .NET Micro Framework初体验(二)
  • .net wcf memory gates checking failed
  • .NET 药厂业务系统 CPU爆高分析
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NetCore 如何动态路由
  • .Net多线程Threading相关详解
  • .net和php怎么连接,php和apache之间如何连接
  • @EnableConfigurationProperties注解使用