数据结构(树)

数据结构(树)

        度:每一个节点的子节点数量

 二叉查找树:

          每一个节点上最多有两个子节点;

         任意节点左子树上的值都小于当前节点;

         任意节点右子树上的值都大于当前节点。

        添加节点规则:

        小的存左边,大的存右边,一样的不存

        查找规则:和添加一样

        弊端:

        当数据有序时,插入效率低

二叉树的遍历方式:

        前序遍历:

        从根节点开始,然后按照当前结点,左子结点,右子结点的顺序遍历

        中序遍历:

        从最左边的子节点开始,然后按照左子结点,当前结点,右子结点的顺序遍历

        后序遍历:

        从最左边的子节点开始,然后按照左子结点,右子结点,当前结点的顺序遍历

        层序遍历:

        从根节点开始一层一层的遍历

平衡二叉树:

        规则:

        任意节点左右子树高度差不超过1

        平衡机制:

         规则1:左旋

        确定支点:从添加的结点开始,不断往父节点找不平衡的节点

        步骤: 1) 把不平衡的点作为支点,把支点左旋降级,变成左子结点,晋升原来的右子节点

        把不平衡的点作为支点;将根节点的右侧往左拉;原先的右子节点变成新的父节点,并把多余的左子节点出让,给已经降级的根节点当右节点

         规则2:右旋

         确定支点:从添加的结点开始,不断往父节点找不平衡的节点

        步骤: 1) 把不平衡的点作为支点,把支点右旋降级,变成右子结点,晋升原来的左子节点

         把不平衡的点作为支点;将根节点的左侧往右拉;原先的左子节点变成新的父节点,并把多余的右子节点出让,给已经降级的根节点当左子节点

         触发时机:当添加一个节点之后,该树不再是一颗平衡二叉树

需要旋转的四种情况:

        左左:

        当根节点左子树的左子树有节点插入,导致二叉树不平衡

        需要一次右旋

        左右:

        当根节点左子树的右子树有节点插入,导致二叉树不平衡

        先局部左旋,到左左情况,然后再整体右旋

        右右:

         当根节点右子树的右子树有节点插入,导致二叉树不平衡

        需要一次左旋

        右左:

        当根节点右子树的左子树有节点插入,导致二叉树不平衡

        先局部右旋,到右右情况,然后再整体左旋

红黑树:

        红黑树是一种自平衡的二叉查找树,每个节点上都有存储位表示节点的颜色;

        每一个节点可以是红或者黑;

        红黑树不是高度平衡的,它的平衡是通过“红黑规则”进行实现的

        红黑规则:

        每一个节点是红色或是黑色;

        根节点必须是黑色;

        如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点(Nil)是黑色的;

        如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连的情况);

        对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点

        

        图来自黑马程序员网课 

        添加节点规则:

        默认颜色:红色(效率高)

        

                图来自黑马程序员 

        

                                图来自黑马程序员 

        红黑树增删改查性能较好

        

        

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

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

相关文章

Postman 连接数据库 利用node+xmysql

1、准备nodejs环境 如果没有安装,在网上找教程,安装好后,在控制台输入命令查看版本,如下就成功了 2、安装xmysql 在控制台输入 npm install -g xmysql 3、连接目标数据库 帮助如下: 示例: 目标数据库…

HTML静态网页成品作业(HTML+CSS)—— 美食湘菜介绍网页(5个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有5个页面。 二、作品演示 三、代…

MASA:匹配一切、分割一切、跟踪一切

摘要 https://matchinganything.github.io/ 在复杂场景中跨视频帧稳健地关联相同对象是许多应用的关键,特别是多目标跟踪(MOT)。当前方法主要依赖于标注的特定领域视频数据集,这限制了学习到的相似度嵌入的跨域泛化能力。我们提…

企业应如何选择安全合规的内外网文件摆渡系统?

网络隔离是一种安全措施,旨在将网络划分为不同的部分,以减少安全风险并保护敏感信息。常见的隔离方式像物理隔离、逻辑隔离、防火墙隔离、虚拟隔离、DMZ区隔离等,将网络隔离成内网和外网。内外网文件摆渡通常指在内部网络(内网&am…

Llama模型家族之拒绝抽样(Rejection Sampling)(五)蒙特卡罗算法在拒绝抽样中:均匀分布与样本接受标准

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…

weditor安装时提示This is an issue with the package mentioned above, not pip

报错如下: note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with …

每日题库:Huawe数通HCIA——全部【813道】

1.关于ARP报文的说法错误的是?单选 A.ARP报文不能被转发到其他广播域 B.ARP应答报文是单播方发送的 C.任何链路层协议都需要ARP协议辅助获取数据链路层标识 DARP请求报文是广播发送的 答案:C  解析: STP协议不需要ARP辅助 2.园区网络搭建时,使用以下哪种协议可以避免出现二层…

【小白专用24.6.8】c#异步方法 async task调用及 await运行机制

await是C#中用于等待异步操作完成的关键字。它通常用于异步方法内部,使得在等待异步操作期间,线程可以继续执行其他操作,从而保持程序的响应性。 在使用await时,需要注意以下几点: 1. async修饰符: 使用…

通过调用栈快速探究 Compose 中 touch 事件的处理原理

前言 Compose 视图的处理方式和 Android 传统 View 有很大差别,针对 touch 事件的处理自然也截然不同。 如何在 Compose 中处理 touch 事件,官方已有非常详尽的说明,可以参考:https://developer.android.google.cn/jetpack/comp…

产品NPDP+项目PMP助你成长

前言 从管理的角度来讲,产品经理和项目经理的区别,我们应该吧项目经理和产品的区别分为一纵一横,那一纵就是我们的项目经理,项目经理在整个新产品研发过程中他扮演的是管理监督项目参与者的角色,其中包括研发部门、技术部门、市场部门或是销售部门等等。他所要做的事情就…

第二十讲:文件操作

第二十讲:文件操作 1.什么是文件1.1什么是文件1.1.1程序文件1.1.2数据文件 1.2二进制文件和文本文件数据的存储方式 2.流和标准流2.1流2.2标准流 3.文件指针4.文件的打开与关闭5.文件顺序读写5.1顺序读写函数介绍5.2打开和关闭函数5.2.1fopen函数5.2.2fclose函数 5.…

matlab 计算三维空间点到直线的距离

目录 一、算法原理二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 直线的点向式方程为: x − x 0 m = y

DT-MIL:用于组织病理学图像的MIL方法

学习信息表示对于组织病理学图像的分类和预测任务至关重要。由于图像大小巨大,通常使用多实例学习(MIL)方案来处理整张组织病理学图像(whole-slide histopathological image)。然而,MIL的弱监督性质导致了学…

能在电脑和手机上使用的便签app 好用的便签软件

随着科技的日新月异,越来越多的软件被开发出来,极大地便利了我们的工作和生活。其中,便签软件凭借其便捷的记录功能,受到了广大用户的喜爱。特别是那些能在电脑和手机上同步使用的便签app,更是为我们的工作和生活带来了…

【阿里YYDS】通义千问正式开源 Qwen2

Qwen2–72B正式开源,性能全面超越开源模型Llama3-70B,也超过文心4.0、豆包pro、混元pro等众多中国闭源大模型。 在过去一段时间里,Qwen系列模型从Qwen1.5升级到Qwen2,Qwen2分5个尺寸,包括Qwen2-0.5B、Qwen2-1.5B、Qwen…

Nice Mind 手机版本的思维导图,最新V8.9.0版本,无内购!

这是一款非常好用的手机思维导图APP,为了防止和谐,名字就不说了,软件可以帮助用户快速制作思维导图,不管什么类型的都可以直接使用。如果需要电脑版本的思维导图,可以看置顶文章的另一款软件。 软件获取方式&#xff…

PostgreSQL基础(十):PostgreSQL的并发问题

文章目录 PostgreSQL的并发问题 一、事务的隔离级别 二、MVCC PostgreSQL的并发问题 一、事务的隔离级别 在不考虑隔离性的前提下,事务的并发可能会出现的问题: 脏读:读到了其他事务未提交的数据。(必须避免这种情况&#xf…

TCP攻击是怎么实现的,如何防御?

TCP(Transmission Control Protocol)是互联网协议族中的重要组成部分,用于在不可靠的网络上提供可靠的数据传输服务。然而,TCP协议的一些特性也使其成为攻击者的目标,尤其是DDoS(Distributed Denial of Ser…

安装windows11系统跳过微软账号登录,使用本地账号登录方法

在安装win11系统,进行到如图下所示界面的时候,暂停下 我们可以按下键盘的ShiftF10按键(部分电脑是FnShiftF10),这时屏幕会出现命令行窗口,如图下所示 我们需要在命令行内输入代码oobe\bypassnro.cmd然后回车…

[ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)

🏡作者主页:点击! 🤖网络通信基础TCP/IP专栏:点击! ⏰️创作时间:2024年6月8日14点23分 🀄️文章质量:94分 前言—— 在现代通信网络中,传输介质是数据传…