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

数据结构 -- 树形查找(三)红黑树

红黑树

为什么要发明红黑树

在这里插入图片描述

平衡二叉树AVL:插入/删除很容易破坏平衡性,需要频繁调整树的形态。如:插入操作导致不平衡,则需要先计算平衡因子,找到最小不平衡子树(时间开销大),在进行LL/RR/LR/RL调整

红黑树RBT:插入/删除很多时候不会破坏“红黑”特性,无需频繁调整树的形态。即使需要调整,一般都可以在常数级时间内完成

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

红黑树:适用于频繁的插入/删除的场景

大概会怎么考?

红黑树的定义和性质 – 选择题

在这里插入图片描述

红黑树的插入/删除 – 要能手绘插入过程(不太可能考代码),删除操作比较麻烦,也许不考

在这里插入图片描述

红黑树的定义和性质

在这里插入图片描述

红黑树的定义

在这里插入图片描述

struct RBnode{int key;RBnode* parent;RBnode* lchild;RBnode* rchild;int color;		//结点颜色,如:可用0/1表示红/黑,也可以使用枚举型enum表示颜色
};

在这里插入图片描述

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

在这里插入图片描述

红黑树的插入

插入方法

①先查找,确定插入位置(原理同二叉排序树),插入新结点

在这里插入图片描述

【与黑高bh相关的推论】

如果根结点的黑高为h,内部结点数(关键字)至少为多少个?

内部结点数最少的情况→总共h层黑结点的满树形态

若根结点黑高为h,内部结点数(关键字)至少有2h-1个

在这里插入图片描述

红黑树的删除

重要考点:

①红黑树删除操作的时间复杂度=O(log2n)

②在红黑树中删除结点的处理方式和“二叉排序树的删除’一样

③按②删除结点后,可能破坏“红黑树特性”,此时需要调整结点颜色、位置,使其再次满足“红黑树特性”。

http://www.dtcms.com/a/197664.html

相关文章:

  • 【数据结构】2-3-1单链表的定义
  • 索引与数据结构、并行算法
  • 【Linux】进程的基本概念
  • 云原生安全:IaaS安全全解析(从基础到实践)
  • C++ 之 继承
  • 批量处理 Office 文档 高画质提取图片、视频、音频素材助手
  • 鸿蒙系统电脑:开启智能办公新时代
  • 【HarmonyOS 5开发入门】DevEco Studio安装配置完全指南
  • 中科院自动化研究所通用空中任务无人机!基于大模型的通用任务执行与自主飞行
  • AIDA64 extreme7.5 版本注册激活方法
  • uniapp的适配方式
  • APP手机端测试覆盖点
  • AI助力,短剧发展引来新的创新热潮
  • C++中的四种强制转换
  • 掌握版本控制从本地到分布式
  • 动态内存管理2+柔性数组
  • docker-compose部署项目(springboot服务)以及基础环境(mysql、redis等)ruoyi-ry
  • Leetcode134加油站
  • GO语言语法---For循环、break、continue
  • AI图像处理之ComfyUI节点(二)
  • 前缀和——中心数组下标
  • Compose笔记(二十五)--Brush
  • NSString的三种实现方式
  • OpenHarmony外设驱动使用 (四),Face_auth
  • 三极管集电极输出电路分析
  • IT审计之外包
  • 【图像生成大模型】CogVideoX-5b:开启文本到视频生成的新纪元
  • 第三十七节:视频处理-视频读取与处理
  • 常见的 HTTP 接口(请求方法)
  • Uniapp 与 Uniapp X 对比:新手上手指南及迁移到 Uniapp X 的注意事项