zoukankan      html  css  js  c++  java
  • AVL树---平衡的二叉查找树

    AVL树是每个结点的左子树和右子树的高度最多差1的二叉查找树(空树的高度定义为-1)。

    它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。

    AVL树的性质

    • 左子树和右子树的高度差不超过1
    • 每个结点的左子树和右子树都是AVL树
    • 每个结点都有一个平衡因子,任一结点的平衡因子是-1,0,1。每个结点的平衡因子等于右子树高度减去左子树的高度

    AVL树是在二叉查找树的基础上建立的,我们知道二叉查找树在最坏情况下(每个结点只有左子树或右子树)增删查的时间复杂度是O(N),这种极端的情况下树是高度不平衡的。

    在二叉查找树的基础上,如果使左右子树的高度差不超过1,即达到高度平衡的状态,此时增删查的时间复杂度为O(logN)(2为底数)。

    为了让它保持高度平衡,我们引入了平衡因子,每个结点的平衡因子只可能是-1,0,1中的一个。

    每次插入/删除一个结点,我们都需要向上更新一下新增结点/删除结点的祖先的平衡因子。一旦发现某个祖先的平衡因子变为2或者-2,我们就需要通过旋转来使这棵树保持AVL树的特性。

  • 相关阅读:
    模版
    列表项模版
    vue eventBus 跳坑的办法
    vue适配移动端px自动转化为rem
    pc端,移动端css重置样式
    vue全局引入scss文件(推荐)
    vue安装scss,并且全局引入
    mapState
    通俗易懂的vuex-demo
    ve2.0 v-for循环报错的解决方案
  • 原文地址:https://www.cnblogs.com/i-hard-working/p/10749998.html
Copyright © 2011-2022 走看看