平衡二叉树理论详解

文章目录

  • 基本概念
  • 平衡二叉树插入结点
    • LL(左单旋)
    • RR(右单旋)
    • LR(左右旋)
    • RL(右左旋)
  • 示例插入推导过程

基本概念

平衡二叉树是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
又被称为AVL(Adelson-Velsky and Landis)树
在这里插入图片描述
如图所示,第三个图中的树左右高差为2,是一颗不平衡的二叉树。

平衡二叉树插入结点

在平衡二叉树结点的插入过程中,可能会导致树从平衡变成不平衡的情况,具体有四种情况,如下所示:

LL(左单旋)

在这里插入图片描述
由于插入到左孩子的左孩子上导致的不平衡。

恢复平衡办法: 一次向右旋转即可
如图:以B节点为轴,向右旋转
在这里插入图片描述
在这里插入图片描述
以B节点为轴向右旋转,B节点的右子树成为A节点的左子树

RR(右单旋)

在这里插入图片描述
由于插入到右孩子的右孩子上导致的不平衡。

恢复平衡办法: 一次向左旋转即可
如图:以B节点为轴,向左旋转
在这里插入图片描述
在这里插入图片描述
以B节点为轴,向左旋转,B结点的左子树成为A节点的右子树

LR(左右旋)

在这里插入图片描述
由于插入到左孩子的右孩子上导致的不平衡。

恢复平衡办法: 先向左旋转,再向右旋转
如图:
1、以B节点为轴,向左旋转
2、以C节点为轴,向右旋转
在这里插入图片描述
在这里插入图片描述
下图同上面图一个意思,只是考虑节点多一些。

RL(右左旋)

在这里插入图片描述
由于插入到右孩子的左孩子上导致的不平衡。

恢复平衡办法: 先向右旋转,再向左旋转
如图:
1、以B节点为轴,向右旋转
2、以C节点为轴,向左旋转
在这里插入图片描述
下图同上面图一个意思,只是考虑节点多一些。
在这里插入图片描述

示例插入推导过程

例题:输入关键字序列(16,3,7,11 ,9,26)给出AVL树
如图推导过程:
在这里插入图片描述
ps:计划每日更新一篇博客,今日2023-05-12,日更第二十六天。(补更)
昨日更新:

动态规划理论基础

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux环境下设置python定时任务

linux环境下设置python定时任务 Linux 系统提供了使用者控制计划任务的命令 :crontab 命令 1、在linux环境执行命令,进入编辑界面 crontab -e2、按键盘 i 键,进入编辑模式,输入以下内容,设置2个定时任务 定时任务1:每隔10分钟执…

C语言爬取HTML-爬取壁纸 文末附源码

前言:这学期计算机软件课程设计的其中一个题目是使用C语言爬取HTML,本打算使用C语言的CSpidr库来实现,但是因为它的依赖liburi没有找到在哪里安装,所以放弃了这个想法,使用的是curl以及libxml2这两个库,能够…

GOOGLE|只有大模型才能理解你举的例子(In-context learning)是什么

一、概述 title:LARGER LANGUAGE MODELS DO IN-CONTEXT LEARNING DIFFERENTLY 论文地址:https://arxiv.org/abs/2303.03846 参考:https://www.xiaohongshu.com/user/profile/5f01057f0000000001003c91/640aa237000000001303d871 1.1 Moti…

springboot基于vue的地方美食分享网站

开发技术介绍 Java介绍 JavaScript是一种网络脚本语言,广泛运用于web应用开发,可以用来添加网页的格式动态效果,该语言不用进行预编译就直接运行,可以直接嵌入HTML语言中,写成js语言,便于结构的分离&…

Python文件上传 S3(AWS) 简单实现

1.AWS设置 建立aws账户,进入到S3界面 点击 "Create bucket" 一系列操作之后——这里给bucket命名为csfyp 2. Python部分 python需要先: pip install loguru pip install boto3 这两个包含一些连接python和s3 连接的api 然后直接上代码…

Redis学习---05

一、Redis集群搭建,Redis主从复制,读写分离 默认情况下每台redis服务器都是主节点。 (1) 主从复制:是指将一台redis服务器的数据,复制道其他redis服务。前者成为主节点,后者成为从节点。默认情况下每一台redis服务器…

puppeteer-不需重构,无痛加强vue单页面应用的SEO,提升百度收录排名

背景 最近产品觉得我们网站在百度收录上排名太靠后了,又不肯花钱,就让我们想办法提升网站的SEO。由于项目是用vue3写的,并且已经迭代多个版本了,用nuxt实在不适宜,当然俺的开发水平也不够,周期也会拉得很长…

【华为机试】——每日刷题经验分享

【华为机试】——每日刷题经验分享😎 前言🙌题目:HJ9 提取不重复的整数 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! &a…

LabVIEWCompactRIO 开发指南22 CVT客户端通信(CCC)

LabVIEWCompactRIO 开发指南22 CVT客户端通信(CCC) 如果使用第3章中讨论的CVT进行进程间通信,请考虑使用CCC。如果已经创建了CVT标签,并且想在网络上发布此数据,CCC不失为一个简单而优雅的解决方案。它基于TCP/IP&am…

Linux 指令3

文章目录 标题日期date时间戳 cal 日历find -name 查找which ls 搜指令whereisgrep 行文本过滤工具(例如找到main函数入口)用途例子 ps ajx 进程 打包压缩,解包解压(过程是这么个过程,简化成压缩->解压)…

Java进阶-面向对象进阶(多态包权限修饰符代码块)

1 多态 1.1 多态的形式 多态是继封装、继承之后,面向对象的第三大特性。 多态是出现在继承或者实现关系中的。 多态体现的格式: 父类类型 变量名 new 子类/实现类构造器(); 变量名.方法名();多态的前提:有继承关系,子类对象…

MySQL高级语句(三)

一、正则表达式(REGEXP) 1、正则表达式匹配符 字符解释举列^匹配文本的开始字符’ ^aa ’ 匹配以 aa 开头的字符串$匹配文本的结束字符’ aa$ ’ 匹配以aa结尾的字符串.匹配任何单个字符’ a.b 匹配任何a和b之间有一个字符的字符串*匹配零个或多个在它…

MHA高可用与故障切换

一、MHA的概述 1、 MHA的概念 MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故…

前端需要注意和了解的SEO

SEO的基本了解 1.什么是SEO? SEO(Search Engine Optimization又叫做搜索引擎优化。是一种方式:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。 2. 前端怎么理解SEO? 对于SEO引擎,在前端需要的是做出来的网站,页面…

揭秘物联网平台设备管理核心!Java代码示例对比,一篇文章全知道!

《高并发系统实战派》-- 值得拥有 一、 设备管理模块的意义 设备管理模块是物联网平台的核心模块之一,主要负责设备的接入、注册、管理、监控等工作,是构建物联网平台的基础。通过设备管理模块,可以实现对设备的资源动态管理、设备状态实时…

服务(第二十一篇)mysql高级查询语句(二)

①视图表: 视图表是虚拟表,用来存储SQL语句的定义 如果视图表和原表的字段相同,是可以进行数据修改的; 如果两者的字段不通,不可以修改数据。 语法: 创建:create view 试图表名 as ... 查…

vue3项目搭建超详解

vue3安装与目录讲解 文章目录 vue3安装与目录讲解安装node.jsnpm绑定淘宝镜像安装vue脚手架创建vue项目目录解释推荐使用vscode 安装node.js http://nodejs.cn/download/ 根据自己电脑的位数自行下载。可安装到任意盘哈,因为我C盘比较大,我就直接在C盘了…

springboot项目如何优雅停机

文章目录 前言kill -9 pid的危害如何优雅的停机理论步骤优雅方式1、kill -15 pid 命令停机2、ApplicationContext close停机3、actuator shutdown 停机4、ApplicationListener 监听延时停机 前言 相信很多同学都会用Kill -9 PID来杀死进程,如果用在我们微服务项目里…

快速入门matlab——变量练习

学习目标:1.掌握matlab编程中最常用的几种变量类型 2.对变量类型的属性有所熟悉,不要求记忆,知道了解即可 3.要求熟练运用这几种变量类型创建自己的变量 clear all; % 清除Workspace中的所有…

FreeRTOS_移植和配置

目录 1. 什么是FreeRTOS? 2. FreeRTOS 特点 3. FreeRTOS 移植 3.1 验证程序 1. 什么是FreeRTOS? 我们先看 FreeRTOS 的名字,可以分成两部分:Free 和 RTOS,Free 就是免费的、自由的、不受约束的意思,RTO…