AVL树---平衡的二叉查找树
AVL树是每个结点的左子树和右子树的高度最多差1的二叉查找树(空树的高度定义为-1)。
它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。
AVL树的性质:
- 左子树和右子树的高度差不超过1
- 每个结点的左子树和右子树都是AVL树
- 每个结点都有一个平衡因子,任一结点的平衡因子是-1,0,1。每个结点的平衡因子等于右子树高度减去左子树的高度
AVL树是在二叉查找树的基础上建立的,我们知道二叉查找树在最坏情况下(每个结点只有左子树或右子树)增删查的时间复杂度是O(N),这种极端的情况下树是高度不平衡的。
在二叉查找树的基础上,如果使左右子树的高度差不超过1,即达到高度平衡的状态,此时增删查的时间复杂度为O(logN)(2为底数)。
为了让它保持高度平衡,我们引入了平衡因子,每个结点的平衡因子只可能是-1,0,1中的一个。
每次插入/删除一个结点,我们都需要向上更新一下新增结点/删除结点的祖先的平衡因子。一旦发现某个祖先的平衡因子变为2或者-2,我们就需要通过旋转来使这棵树保持AVL树的特性。
转载于:https://www.cnblogs.com/i-hard-working/p/10749998.html
AVL树---平衡的二叉查找树相关推荐
- AVL树平衡旋转详解
AVL树平衡旋转详解 概述 AVL树又叫做平衡二叉树.前言部分我也有说到,AVL树的前提是二叉排序树(BST或叫做二叉查找树).由于在生成BST树的过程中可能会出现线型树结构,比如插入的顺序是:1, ...
- 一文读懂 AVL 树
背景 AVL 树是一棵平衡的二叉查找树,于 1962 年,G. M. Adelson-Velsky 和 E. M. Landis 在他们的论文<An algorithm for the orga ...
- DSA 经典数据结构与算法 学习心得和知识总结(四) | AVL树
AVL树 从BST的角度看AVL AVL的定义及性质 AVL树的结构定义 AVL树的旋转算法 左左情况---右旋 右右情况---左旋 左右情况---左右旋 右左情况---右左旋 AVL树的遍历操作 A ...
- 纸上谈兵: AVL树
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 二叉搜索树的深度与搜索效率 我们在树, 二叉树, 二叉搜索树中提到,一个有n个节点 ...
- Linux内核之于红黑树and AVL树
为什么Linux早先使用AVL树而后来倾向于红黑树? 实际上这是由红黑树的实用主义特质导致的结果,本短文依然是形而上的观点.红黑树可以直接由2-3树导出,我们可以不再提红黑树,而只提2- ...
- 【数据结构与算法】AVL树的Java实现
前情提要 之前只写了一些AVL树核心算法,这里给出一个AVL树的完整实现. AVL树是平衡查找二叉树,不仅能避免二叉搜索树出现斜树的状况,更是能保持比较标准的O(log2N),但AVL树可能需要很多次 ...
- 【大话数据结构C语言】57 平衡二叉树(AVL树)
欢迎关注我的公众号是[CodeAllen],关注回复[1024]获取精品学习资源 程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 平衡二叉排序树 平衡二叉树是一种二叉 ...
- C++AVL树(自平衡二叉查找树)(附完整源码)
C++AVL树自平衡二叉查找树 node结构体定义 实现了以下几个接口 AVL树(自平衡二叉查找树)算法的完整源码(定义,实现,main函数测试) node结构体定义 typedef struct n ...
- AVL树-自平衡二叉查找树(Java实现)
在计算机科学中,AVL树是最先发明的自平衡二叉查找树.AVL树得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis,他们在 1962 年的论文 "An alg ...
最新文章
- php微信开发例子,微信开发实战之知乎日报
- 自我小结--工作、学习、编码
- [原]调试实战——程序CPU占用率飙升,你知道如何快速定位吗?
- mysql 8.0.25 取巧解决修改密码报错问题
- Java Protected 解读
- 2021了,不会还有测试人员认为Jmeter就等于性能测试吧!
- 在LaTeX中使用BibTeX时的一个问题及其解决:编译PDF不随bib文件更新
- nmap +shell脚本实现内网端口巡检
- ajax实现文件表单上传,ajax文件异步实现表单上传
- 学计算机需要会拼音吗,计算机学习拼音
- 金仓数据库 KingbaseGIS使用手册(2. 简介)
- 虚拟机VMware官网下载教程,中文详细步骤(图文)
- 获取某年某月的第一天是星期几
- 制作3D实时交互影像产品,需要用到的技术和软件!
- java halt_System.exit和Runtime halt区别
- 【OSPF外部路由-4类LSA(sum-asbr)和5类LSA(external)以及7类LSA(Nssa)】(OSPF的特殊区域)(外部路由选路特性)
- 绘制一只奥特曼DIY
- Ambari2.7+HDP3.0安装(基于Centos7)
- 全球主要高光谱遥感卫星介绍
- Linux下对文件权限的管理
热门文章
- Extjs4 MVC 示例
- ROS系统 C++或Python实现订阅者Subscriber
- SFTP Net Drive
- 回顾inputstream和outputstream
- Android 项目,没有可运行的Module项
- Coursera, Big Data 1, Introduction (week 3)
- 欧洲安全研究人员:黑客是如何泄露加密电子邮件
- Spring @EventListener 异步中使用condition的问题
- Hadoop 之Pig的安装的与配置之遇到的问题---待解决
- 【Silverlight】汉诺塔游戏,带AI