第七章 查找 六、平衡二叉树

2023-09-21 21:57:13

目录

一、定义

二、最小不平衡子树

1、平衡方法

2、查找效率

三、插入、删除操作

平衡二叉树的插入操作:

平衡二叉树的删除操作:

1、例子1

(1)若我们要删除9

(2)若我们要删除55

2、例子2

​编辑


一、定义

平衡二叉树是一种特殊的二叉树,具有如下性质:

  1. 它是一棵空树,或者它的左右两个子树的高度差的绝对值不超过 1,并且其左右两个子树都是平衡二叉树。

  2. 对于任意节点,它的左右两个子树的高度差都不超过 1。

平衡二叉树的主要作用是保持树的平衡,以确保操作的时间复杂度是 O(logn) 级别的。平衡二叉树的常见实现包括 AVL 树和红黑树等。

二、最小不平衡子树

1、平衡方法

(1)LL左孩子右旋

(2)RR右孩子左旋

(3)LR左孩子的右孩子先左后右

(4)RL右孩子的左孩子先右后左

2、查找效率

三、插入、删除操作

平衡二叉树的插入操作:

插入新结点后,要保持二叉排序树的特性不变(左<中<右)

若插入新结点导致不平衡,则需要调整平衡;

平衡二叉树的删除操作:

删除新结点后,要保持二叉排序树的特性不变(左<中<右)

若删除新结点导致不平衡,则需要调整平衡;

1、例子1

(1)若我们要删除9

从9开始往上寻找不平衡子树;

没有找到,就直接删除,不用调整平衡。

(2)若我们要删除55

在上面这个例子中,孙子在爷爷的右边的右边,所以为RR的情况。

把儿子进行左单旋,得到。

2、例子2

(1)若我们要删除32

我们找到44为最小不平衡子树的根结点

找到个头最高的儿子,和孙子

孙子在爷爷的右边的左边,为RL的形式

所以我们将孙子50先右旋再左旋,得到

更多推荐

Go 文件操作

创建文件将数据存储到文件之前,先要创建文件。GO语言中提供了一个Create()函数专门创建文件。该函数在创建文件时,首先会判断要创建的文件是否存在,如果不存在,则创建,如果存在,会先将文件中已有的数据清空。同时,当文件创建成功后,该文件会默认的打开,所以不用在执行打开操作,可以直接向该文件中写入数据。创建文件的步骤:

使用vue-cli搭建spa项目

目录什么是vue-cli安装vue-cli使用脚手架vue-cli(来构建项目)vue项目结构的说明基于spa项目完成路由基于spa项目完成嵌套路由什么是vue-cliVueCLI是一个官方发布的用于快速搭建Vue.js项目的命令行工具。它提供了一套交互式的脚手架,可以帮助开发者初始化项目、配置构建工具、管理依赖等。安

【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透

文章目录前言1.下载Gitlab2.安装Gitlab3.启动Gitlab4.安装cpolar5.创建隧道配置访问地址6.固定GitLab访问地址6.1保留二级子域名6.2配置二级子域名7.测试访问二级子域名前言GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。G

数据库-理论基础

目录1.什么是数据库?2.数据库与文件系统的区别?3.常见的数据库由那些?4.关系型数据库(MySQL)的特征及组成结构介绍1.什么是数据库?数据:描述事物的符号记录,可以是数字,文字,图形,声音,语言等多种形式,他们都可以经过数字化后存入计算机数据库:存储数据的仓库,是长期存放在计算机内,有组织,可共享的大量数据集合

Flutter热更新技术探索

一,需求背景:APP发布到市场后,难免会遇到严重的BUG阻碍用户使用,因此有在不发布新版本APP的情况下使用热更新技术立即修复BUG需求。原生APP(例如:Android&IOS)的热更新需求已经比较成熟,但Flutter技术栈目前还缺少类似的技术方案,因此Flutter研发团队,也需要类似的热更新技术。二,Flutt

南大通用数据库-Gbase-8a-学习-39-show命令汇总(持续更新)

目录一、环境信息二、show功能参数三、show命令示例1、SHOWLOADLOGS(加载日志报错)2、SHOWCOLUMNS(列信息)3、SHOWCREATEDATABASE(建库信息)4、SHOWCREATEPROCEDURE(存储过程信息)5、SHOWCREATETABLE(建表信息)6、SHOWTABLELOC

中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表

随着仪表测点的大幅增多和采样频率的增加,中国核动力研究设计院仪控团队原本基于MySQL搭建的旧系统已经无法满足大量数据并发写入、实时查询和聚合计算的需求。他们在研究DB-Engines时序数据库榜单时了解到国内排名第一的DolphinDB。经过测试,发现其非常符合业务需求,并且在2022年1月正式选择了DolphinD

2023年全国研究生数学建模竞赛华为杯C题大规模创新类竞赛评审方案研究

2023年全国研究生数学建模竞赛华为杯C题大规模创新类竞赛评审方案研究原题再现:现在创新类竞赛很多,其中规模较大的竞赛,一般采用两阶段(网评、现场评审)或三阶段(网评、现场评审和答辩)评审。创新类竞赛的特点是没有标准答案,需要评审专家根据命题人(组)提出的评审框架(建议)独立评审。所以,对同一份作品,不同评委的评分可能

MySQL 开源证书真比 Postgres 更能带动社区吗?

笔者之前写的「全方位对比Postgres和MySQL」还在持续发酵,最近腾讯的公众号也发布了一篇「MySQLVSPostgreSQL,谁是世界上最成功的数据库?」,其中在对比两者使用的开源证书时写到:PostgreSQLLicense是一个宽松的开源许可证,类似于MIT许可证。它允许用户自由使用、修改和分发,无需公开源

go迷之切片截取分析

切片截取,有没有很迷?目录典型截取(两参数、三参数)及分析迷之append参与截取及细节分析关于截取时的初始索引是否从第一个位置开始的影响修改原切片细节分析典型截取(两参数、三参数)及分析先看一个例子来表示一下切片截取(仅截取,无append):a:=[]int{1,2}a0:=a[0:1]fmt.Printf("a0

UI设计和平面设计的区别是什么?看完这篇一次搞懂

很多想要从事视觉领域工作的新手设计师,搞不懂UI设计和平面设计的区别;也有很多平面设计师工作后想转UI,却不知道该如何进行,导致择业和职业发展受阻,其实核心问题还是因为没有弄清楚UI设计和平面设计的区别是什么。这里先说明,UI设计和平面设计,是两个完全不同的设计领域。UI设计师着重于解决产品的用户习惯和易用体验,而平面

热文推荐