news 2026/7/22 20:41:09

AVL树要点急速过

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AVL树要点急速过

AVL树

一.概念:

1.二叉搜索树

2.所有子树高度差至多为1

3.左右子树都是AVL树

4.空树也是AVL树

二.特点

1.有(或没有)平衡因子,平衡因子 = 右子树高度 - 左子树高度 = 1/ 0/ -1

2.两个logN:高度和时间复杂度

3.高度平衡

三.结构

1.结点(AVLTreeNode):父母,左子树,右子树,平衡因子,值

2.AVL树(AVLTree):结点

四.插入

1.比较插入值kv的first从根节点的first向下开始比较,走到指定的叶子结点的子节点

2.插入后某些结点的平衡因子可能会发生改变,要进行更新:插入到左子树,平衡因子-1;插入到右子树,平衡因子+1;依次往上更新

3.更新后的平衡因子必有以下几种情况:(正常情况下,插入结点一定有平衡因子发生改变)

a 平衡因子变成+-1:继续往上判断

b 平衡因子变成0:正常结束完美结局

c 平衡因子变成+-2:坏结局,开始旋转

4.若发生旋转,再次更新平衡因子

五.旋转

a 右单旋(左边彻底高)旋转条件: 平衡因子 -2 -1

5的右给10的左,5成为10的父母

b 左单旋(右边彻底高)旋转条件: 平衡因子 2 1

15的左给10的右,15做10的父母

注意:10结点有两种情况:为根节点和非根节点

b树可能为空

定义两个结点parent 10 subL5

先改变各结点的指向,再更新平衡因子

c 左右双旋(先左高,再右高)旋转条件: 2 -1 -1

先左旋5再右旋10

最终结果:8的左给5的右,8的右给10的左,5和10做8的左右

d右左双旋(先右高再左高)

12的左给10的右,12的右给15的左,10和15为12的左右

用到三个结点parent,subL,subLR

先执行subR的左单旋,再执行parent的右单旋

最后更新平衡因子

判断条件为subRL(12)的平衡因子

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 16:40:13

【期末复习02】

文章目录一.程序分析题项目结构分析题01分析题02分析题03分析题04二.程序改错题项目结构改错题01改错题02改错题03改错题04改错题05改错题06一.程序分析题 项目结构 分析题01 分析题02 分析题03 分析题04 二.程序改错题 项目结构 改错题01 改错题02 改错题03 改错题…

作者头像 李华
网站建设 2026/7/22 2:24:02

ubuntu 使用管理员的权限有几种方式

1.ubuntu 使用管理员的权限有几种方式在Ubuntu系统中,获取管理员权限主要通过以下几种方式,结合命令行与图形界面操作,需注意权限使用的安全性:1. sudo命令(临时权限提升)基础用法:在命令前加su…

作者头像 李华
网站建设 2026/7/22 15:48:59

typename的用法

1、typename关键字有3个主要用途:(1)在模板中声明一个参数类型;(2)用于告诉编译器一个嵌套的类型,而不是静态成员;(3)模板模板参数时使用,作为类型…

作者头像 李华
网站建设 2026/7/20 10:10:21

Iceberg在Hadoop集群使用步骤(适配AI大模型)

Iceberg在Hadoop集群使用步骤在 Cloudera Data Platform(CDP) 集群中使用 Apache Iceberg,需结合 CDP 的集成能力(如 Spark 3、Hive Metastore、Catalog 支持等)。以下是 完整、可操作的使用步骤(适用于 CD…

作者头像 李华
网站建设 2026/7/22 0:19:30

共享IP和独享IP有什么区别?企业建站必懂的服务器基础

很多老板做网站不会选服务器,共享 IP 和独享 IP,到底有什么区别?第一:稳定性不同共享 IP 多个网站一起用同一个 IP,其中一个网站出问题,可能影响全部网站访问。而独享IP是你一个,用一台服务器的…

作者头像 李华
网站建设 2026/7/22 21:09:36

酵母蛋白:嘌呤含量到底怎么样?

最近在健身圈比较火的酵母蛋白,有一些人会担忧它的嘌呤问题。作为一种新兴的优质蛋白来源,酵母蛋白的嘌呤含量究竟高不高?先给大家揭秘:冲泡后的酵母蛋白饮品属于低嘌呤范围,可以放心喝!原因,就…

作者头像 李华