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

数据结构-二叉搜索树与红黑树

4.二叉搜索树

又叫二叉查找树、有序二叉树、排序二叉树。树中任意一个结点,其左子树的每个节点值都要小于该节点,其右子树的每个节点值都要大于该节点

作用:能够进行快速查找、插入、删除操作

4.1 二叉搜索树的时间复杂度

注:二叉搜索树的形态各异,故时间复杂度也不尽相同

这里重点分析查找的时间复杂度,因为不管删除、插入操作,都要先进行查找目标。

4.1.1 查找时间复杂度
4.1.1.1 一般情况

分析:查找目标节点都要先从根节点开始找

eg:这里我们查找下图 值为5的节点,根据二叉搜索树的特点,首先我们要从结点开始,由于5比10小走左边到6的位置,由于5比6小继续走左边到4的位置,而5比4大故走右边,这里就找到5了,这里一共进行了3次对比找到了5。其他节点的查找方法也是这样。

下图,2的几次方代表每层的最大节点数量,而这个次方就代表对比的次数

故从上面得到,查找的时间复杂度为O(logn),由于上面说过,进行插入、删除操作都要进行查找操作,故它们两的时间复杂度也为O(logn)

4.1.1.2 特殊情况

这种情况就从二叉树退化为了链表,而链表的时间复杂度为O(n),故它的时间复杂度也为O(n) 。

5.红黑树

5.1 概念

也是一种自平衡的二叉搜索树(BST),以前叫作平衡二叉B树

5.2 红黑树特质(红黑规则)

5.2.1 节点要么是红色,要么是黑色

5.2.2 根节点必须是黑色

5.2.3 叶子节点都是黑色的空节点(标为null的都是空节点)

5.2.4 红黑树中红色节点的子节点都是黑色

5.2.5 从任意节点到叶子节点的所有路径都包含相同数目的黑色节点

注:再添加或删除节点时,如果不符和这些性质会发生旋转,以达到所有性质,也就是说这五个性质都是为了保证红黑树的平衡。

5.3 红黑树时间复杂度

5.3.1 查找

红黑树也h是一个二叉搜索树,故时间复杂度为O(logn)

5.3.2 添加

添加搜先要从查找操作开始,因为需要查找到目标添加位置,时间复杂度为O(logn),添加完成后,为了保证满足红黑树的特质即规则,故需要进行时间复杂度为O(1)的旋转调整操作。故总时间复杂度为O(logn)。

5.3.3 删除

删除搜先要从查找操作开始,因为需要查找到目标添加位置,时间复杂度为O(logn),删除完成后,为了保证满足红黑树的特质即规则,故需要进行时间复杂度为O(1)的旋转调整操作。故总时间复杂度为O(logn)。

即查找、添加、删除都是O(logn)

http://www.lryc.cn/news/397443.html

相关文章:

  • 52771-009P 同轴连接器
  • 鸿蒙语言基础类库:【@ohos.util.Vector (线性容器Vector)】
  • 使用Python绘制堆积面积图
  • 代码还原动态调试之 pstree 乘法变加法
  • C++:获取当前可执行核心数(开辟线程)
  • 【简历】吉林某985大学:JAVA实习简历指导,面试通过率相当低
  • C#中的MD5摘要算法与哈希算法
  • 使用 python 构建企业级高可用海量爬虫调度系统
  • IDEA常用技巧荟萃:精通开发利器的艺术
  • GD32F303之CAN通信
  • postgres 的dblink使用,远程连接数据库
  • 短视频矩阵系统是什么?怎么搭建短视频矩阵系统?一文了解矩阵模式
  • 查看centos硬盘大小
  • 2024 年 6 月公链行业研报:市场回调,比特币和以太坊 Layer 2 表现各异
  • SAP S4 销售组的定义和分配
  • 实时数仓和离线数仓的区别是什么,企业该如何选择合适的数仓架构?
  • 花所Flower非小号排名20名下载花所Flower
  • 程序员有哪些职位?
  • python+Selenium自动化之免登录(cookie及token)
  • Web安全:SQL注入
  • 【LLM-驯化】成功配置多模态大模型InternLM-XComposer微调环境
  • C++·继承
  • 2024最适合小白的Midjourney教程,值得收藏!
  • MVC 返回集合方法,以及分页
  • 昇思MindSpore学习笔记6-05计算机视觉--SSD目标检测
  • vb.netcad二开自学笔记9:界面之ribbon
  • 学习笔记——动态路由——OSPF链路状态通告(LSA)
  • 模拟防止重复提交
  • C++:strcut与class的区别
  • 科研绘图系列:R语言两组数据散点分布图(scatter plot)