zoukankan      html  css  js  c++  java
  • 平衡二叉树结构 AVL

    它是在BST的基础上又加了限制条件,限制任一结点的左右子树的高度差不能大于1.也就是说AVL看起来要更加规整。 索引 若理想情况--左右子树高度相等,其搜索时间复杂度为log(N),若不理想--线性树,时间复杂度变为O(N)。 AVL平衡失控的原因是因为加入了新结点。它有四种失衡状态: 索引 AVL树失去平衡之后,可以通过旋转使其恢复平衡。下面分别介绍四种失去平衡的情况下对应的旋转方法。 LL的旋转。LL失去平衡的情况下,可以通过一次旋转让AVL树恢复平衡。步骤如下:
    1. 将根节点的左孩子作为新根节点。
    2. 将新根节点的右孩子作为原根节点的左孩子。
    3. 将原根节点作为新根节点的右孩子。
    LL旋转示意图如下: 索引 RR的旋转:RR失去平衡的情况下,旋转方法与LL旋转对称,步骤如下:
    1. 将根节点的右孩子作为新根节点。
    2. 将新根节点的左孩子作为原根节点的右孩子。
    3. 将原根节点作为新根节点的左孩子。
    RR旋转示意图如下: 索引 LR的旋转:LR失去平衡的情况下,需要进行两次旋转,步骤如下:
    1. 围绕根节点的左孩子进行RR旋转。
    2. 围绕根节点进行LL旋转。
    LR的旋转示意图如下: 索引 RL的旋转:RL失去平衡的情况下也需要进行两次旋转,旋转方法与LR旋转对称,步骤如下:
    1. 围绕根节点的右孩子进行LL旋转。
    2. 围绕根节点进行RR旋转。
    RL的旋转示意图如下: 索引
  • 相关阅读:
    彻底理解Netty
    linux netstat 统计连接数查看
    log4j2 自动删除过期日志文件配置及实现原理解析
    Log4j2的Policy触发策略与Strategy滚动策略配置详解
    @Accessors
    Caffeine Cache实战
    ws协议与http协议的异同
    深入理解Java:注解(Annotation)自定义注解入门
    java日志框架
    springboot 集成J2Cache
  • 原文地址:https://www.cnblogs.com/ZoHy/p/12400691.html
Copyright © 2011-2022 走看看