AVL树是自平衡二叉查找树,也叫平衡二叉树

在AVL树中任何节点的两个子树的高度最大差别为1

为什么都用红黑树不用AVL树?

1. 如果插入一个node引起了树的不平衡,
AVL和RB-Tree都是最多只需要2次旋转操作,即两者都是O(1);
但是在删除node引起树的不平衡时,最坏情况下,
AVL需要维护从被删node到root这条路径上所有node的平衡性,
因此需要旋转的量级O(logN),而RB-Tree最多只需3次旋转,只需要O(1)的复杂度。2. 其次,AVL的结构相较RB-Tree来说更为平衡,
在插入和删除node更容易引起Tree的unbalance,
因此在大量数据需要插入或者删除时,AVL需要rebalance的频率会更高。
因此,RB-Tree在需要大量插入和删除node的场景下,效率更高。
自然,由于AVL高度平衡,因此AVL的search效率更高。3. map的实现只是折衷了两者在search、insert以及delete下的效率。
总体来说,RB-tree的统计性能是高于AVL的。

AVL树的旋转

从发生了不平衡的最大深度的节点开始旋转

有两类 四种模型:

左左  右右(单旋转)

左右  右左

左左的情况:

左右的情况

你知道什么是AVL树吗?相关推荐

  1. AVL树、splay树(伸展树)和红黑树比较

    AVL树.splay树(伸展树)和红黑树比较 一.AVL树: 优点:查找.插入和删除,最坏复杂度均为O(logN).实现操作简单 如过是随机插入或者删除,其理论上可以得到O(logN)的复杂度,但是实 ...

  2. 算法基础知识科普:8大搜索算法之AVL树(上)

    前段时间介绍了二叉搜索树(BST),我们知道这种搜索结构存在的弊端是对输入序列存在强依赖,若输入序列基本有序,则BST近似退化为链表.这样就会大大降低搜索的效率.AVL树以及Red-Black树就是为 ...

  3. 【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。

    S 推荐阅读 对于另一半,你真正的爱过吗? 背景 西天取经的路上,一样上演着编程的乐趣..... 1.若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值. 2.若它的右子树不为空,则右子树上 ...

  4. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-AVL树(一)

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

  5. 数据结构与算法——AVL树类的C++实现

    关于AVL树的简单介绍能够參考: 数据结构与算法--AVL树简单介绍 关于二叉搜索树(也称为二叉查找树)能够參考:数据结构与算法--二叉查找树类的C++实现 AVL-tree是一个"加上了额 ...

  6. 纸上谈兵: AVL树

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 二叉搜索树的深度与搜索效率 我们在树, 二叉树, 二叉搜索树中提到,一个有n个节点 ...

  7. AVL树入门(转载)

    原文链接:http://lib.csdn.net/article/datastructure/9204           作者:u011469062 前言:本文不适合 给一组数据15分钟就能实现AV ...

  8. PAT1123 Is It a Complete AVL Tree(AVL树完全二叉树)

    题意: 给出一系列数,要求组成AVL树,最后层序输出,并且判断是否为一个完全二叉树 要点: 这题就是一个AVL树的插入和判断完全二叉树,之前分别都有出现过,AVL树的建立需要记忆. #include& ...

  9. Linux内核之于红黑树and AVL树

    为什么Linux早先使用AVL树而后来倾向于红黑树?        实际上这是由红黑树的实用主义特质导致的结果,本短文依然是形而上的观点.红黑树可以直接由2-3树导出,我们可以不再提红黑树,而只提2- ...

  10. 算法(6) —— AVL树

    AVL树二叉查找树的一种,所以其操作和二叉查找树的很多操作是相同的. 1. 1 #ifndef AVLTREE_H 2 #define AVLTREE_H 3 4 struct AvlNode; 5 ...

最新文章

  1. 【勘误】第4章字符串的实现
  2. c语言中用于判断ch是否是字符的表达式,最新C语言复习题集资料
  3. 物理机存放mysql实例原则_MySQL优化笔记(四)--表的设计与优化(单表、多表)...
  4. 数据结构排序法之希尔排序法(Shell Sort)
  5. CSE:阿里在线应用如何演进成Serverless架构
  6. PHP RSS/Feed 生成类库(支持RSS 1.0/2.0和ATOM)
  7. nginx负载均衡器处理session共享的几种方法(转)
  8. 【图神经网络】从源头探讨 GCN 的行文思路
  9. 线材下料优化python算法_深度学习中的优化算法(Optimizer)理解与python实现
  10. YYText源码解读-YYText同步/异步渲染流程(一)—UIView与CALayer
  11. 40余个超好用的在线影视站点
  12. 南大计算机课程,南京大学 计算机系统基础 课程实验 2018(PA0-1)
  13. 《2022爱分析·人工智能应用实践报告》发布:从点到面,人工智能推动企业智能化转型
  14. InputStreamReader乱码
  15. 选课系统软件测试计划规划,职业生涯规划测评系统 测评软件
  16. 直播入口地址的数据库修改
  17. 初夏小谈:叩响C++世界的大门
  18. 生成MyEcilpse注册码
  19. matlab源知识库,MATLAB產生隨機數
  20. 2021-06-22Android模拟器

热门文章

  1. SolrJ查询Solr数据
  2. Laravel 加载第三方类库的方法
  3. 使用原生JS实现简单的ajax
  4. win7编程接口的一些变化
  5. [周年感悟]看软件项目中的四种角色
  6. [WPF]winfom中ShowWPF新窗口时TextBox等控件无法输入问题解决方法 .
  7. VI常用使用命令 为初次接触VI 的兄弟们献微利
  8. PostgreSQL(从版本9.3至11.2)任意命令执行漏洞 cve-2019-9193
  9. golang post get 请求 简介
  10. linux c 调试 strace 诊断 调试程序 异常退出 崩溃