简介

平衡二叉搜索树是一种特殊的二叉搜索树。为什么会有平衡二叉搜索树呢?

考虑一下二叉搜索树的特殊情况,如果一个二叉搜索树所有的节点都是右节点,那么这个二叉搜索树将会退化成为链表。从而导致搜索的时间复杂度变为O(n),其中n是二叉搜索树的节点个数。

而平衡二叉搜索树正是为了解决这个问题而产生的,它通过限制树的高度,从而将时间复杂度降低为O(logn)。

AVL的特性

在讨论AVL的特性之前,我们先介绍一个概念叫做平衡因子,平衡因子表示的是左子树和右子树的高度差。

如果平衡因子=0,表示这是一个完全平衡二叉树。

如果平衡因子=1,那么这棵树就是平衡二叉树AVL。

也就是是说AVL的平衡因子不能够大于1。

先看一个AVL的例子:

总结一下,AVL首先是一个二叉搜索树,然后又是一个二叉平衡树。

AVL的构建

有了AVL的特性之后,我们看下AVL是怎么构建的。

public class 

看动画学算法之:平衡二叉搜索树AVL Tree相关推荐

  1. 五.树,二叉树,二叉搜索树(BST)和自平衡二叉搜索树(AVL)

    1.树 树是一种数据结构 比如:目录结构 树是一种可以递归定义的数据结构 树是由n个节点组成的集合: 如果 n=0, 那这是一颗空树 如果 n>0, 那存在1个节点作为树的根节点,其他节点可以分 ...

  2. C++泛型编程实现平衡二叉搜索树AVL

    代码如下: #include <iostream> using namespace std;template <typename T> struct AVLNode {type ...

  3. 看动画学算法之:二叉搜索树BST

    文章目录 简介 BST的基本性质 BST的构建 BST的搜索 BST的插入 BST的删除 看动画学算法之:二叉搜索树BST 简介 树是类似于链表的数据结构,和链表的线性结构不同的是,树是具有层次结构的 ...

  4. 最适合新手看的平衡二叉搜索树(BBST)的创建,包含详细过程,一看就会(C++版)

    写在前面:本人大二小白,本篇文章是我第一次写博客,用来记录我的学习过程,我想将我在学习中遇到的各种的问题和困难写下来,希望大家能够不要犯同样的错误.我会尽可能的详细的把每一个步骤都解释清楚,那么废话不 ...

  5. DFS算法之无序列表转换为平衡二叉搜索树

    题目简介:给定一个单链表,其中的元素不是有序排列的,将其转换为高度平衡的BST(二叉搜索树). 思路:我的思路就是一次遍历单链表,每遍历一个元素,就将其插入树中.在插入的过程中,先找到应该插入的位置, ...

  6. 数据结构与算法-平衡二叉搜索树

    平衡二叉搜索树 1.自平衡的二叉搜索树 2.平衡 (1)空树平衡 (2)非空树平衡 左右子树平衡 左右子树高度差绝对值 <= 1 3.平衡因子 左右子树的高度差的衡量值 -1 0 1 (一)平衡 ...

  7. 《恋上数据结构第1季》平衡二叉搜索树、AVL树

    AVL树 二叉搜索树缺点分析 改进二叉搜索树 平衡(Balance) 理想平衡 如何改进二叉搜索树? 平衡二叉搜索树(Balanced Binary Search Tree) AVL树 BST 对比 ...

  8. 二叉搜索树、平衡二叉搜索树和红黑树

    文章目录 一. 二叉搜索树(Binary Sort Tree) 二. 二叉平衡搜索树(AVL) 三. 红黑树 一. 二叉搜索树(Binary Sort Tree) 二叉搜索树,又称为二叉排序树(二叉查 ...

  9. 平衡二叉搜索树 - 左旋|右旋

    上一节 红黑树前奏 - 对树的基本理解 我们讲到 二叉搜索树 单向链表的问题,为了解决这个问题,我们引入了平衡二叉搜索树. 所谓平衡二叉搜索树,必须满足 BST 的特性.何为平衡,每个节点的平衡因子的 ...

最新文章

  1. mysql表级锁和行级锁
  2. hdu3691(无向图最小割的求解)
  3. goods.java_javaweb网上书城项目 1.用户管理:注册会员 - 下载 - 搜珍网
  4. jquery --- 多选下拉框的移动(穿梭框)
  5. André Weil | 数学史:为什么,怎么看
  6. call,apply,bind的区别
  7. python爬取系统_python应用:爬虫框架Scrapy系统学习第四篇——scrapy爬取笔趣阁小说...
  8. 支付宝回应手机黑产;微软将允许员工永久在家办公;Flutter 1.22 正式发布|极客头条
  9. 怎样使用计算机解方程,【教程】用计算器解方程(牛顿法)
  10. dellnas存储服务器型号,Dell Storage NX系列NAS存储
  11. Go GUI---lxn/walk 自带demo学习---16.notifyicon通知图标
  12. mad和php的区别,良心解析kakaKUC-MAD好用吗?怎么样呢?体验揭秘分析
  13. mapgis矢量化怎么打分数_Mapgis矢量化方法
  14. 从1234中选出3个组成不重复的三位数
  15. R语言实战应用精讲50篇(十二)-正态分布与方差齐性的检验方法与SPSS操作
  16. 可汗学院金融学(一)
  17. 移动web基础(三) 弹性盒子下
  18. 李帅将道访武当山,拜会李光富会长
  19. vivado工程打包
  20. h3c ip和mac地址绑定

热门文章

  1. 机器学习-Logistic回归原理及实战
  2. 调度场算法与逆波兰表达式
  3. Linux 下的 AddressSanitizer
  4. Linux 进程(一) 进程概念和进程状态(僵尸进程、孤儿进程、守护进程)
  5. [Kafka与Spark集成系列四] Spark运行结构
  6. 怎么确保网站的可用性
  7. Go 应用性能优化指北
  8. Django模版(一)
  9. 一文简述FFmpeg
  10. 音视频技术开发周刊 | 221