文章目录

  • 前言
  • 一、旋转的分类
    • 1.LL失衡
    • 2.RR失衡
    • 3.LR失衡
    • 4.RL失衡
  • 二、实现LL平衡旋转
  • 三、实现RR平衡旋转
  • 四、实现LR平衡旋转
  • 五、实现RL平衡旋转

前言

我们知道在二叉平衡(AVL)树中是存在平衡因子的,平衡因子的作用是判断AVL树是否平衡,当AVL树不平衡时,我们就需要通过旋转使其重回平衡。

一、旋转的分类

1.LL失衡

所谓的LL平衡旋转是指,新插入的节点N使AVL树失去平衡,且最先失去平衡的节点为P。当N是在P的左节点的左子树上时,需要通过LL平衡旋转使AVL树重回平衡。如下图:

2.RR失衡

所谓的LL平衡旋转是指,新插入的节点N使AVL树失去平衡,且最先失去平衡的节点为P。当N是在P的右节点的右子树上时,需要通过LL平衡旋转使AVL树重回平衡。如下图:

3.LR失衡

所谓的LL平衡旋转是指,新插入的节点N使AVL树失去平衡,且最先失去平衡的节点为P。当N是在P的左节点的右子树上时,需要通过LL平衡旋转使AVL树重回平衡。如下图:

4.RL失衡

所谓的LL平衡旋转是指,新插入的节点N使AVL树失去平衡,且最先失去平衡的节点为P。当N是在P的右节点的左子树上时,需要通过LL平衡旋转使AVL树重回平衡。如下图:

二、实现LL平衡旋转

三、实现RR平衡旋转

四、实现LR平衡旋转

第一步:通过“左旋转”,将"LR"转换成“LL”
第二步:通过“右旋转”,将“LL”转换成“平衡树”

注意:我们可以发现,在实现LR的平衡时,我们用到了LL,和RR,所以在真是的代码中,我们只需要写LL和RR的逻辑代码,对于RL和LR而言,只需要调用RR和LL即可。

五、实现RL平衡旋转

第一步:通过“右旋转”,将"RL"转换成“RR”
第二步:通过“左旋转”,将“RR”转换成“平衡树”

注意:我们可以发现,在实现LR的平衡时,我们用到了LL,和RR,所以在真是的代码中,我们只需要写LL和RR的逻辑代码,对于RL和LR而言,只需要调用RR和LL即可。

二叉平衡(AVL)树中的 LL旋转、RR旋转、LR旋转、RL旋转 的详细解释相关推荐

  1. 平衡二叉树-AVL树(LL、RR、LR、RL旋转)

    平衡二叉树的定义: 任意的左右子树高度差的绝对值不超过1,将这样的二叉树称为平衡二叉树,二叉平衡树前提是一个二叉排序树. 平衡二叉树的插入: 二叉平衡树在插入或删除一个结点时,先检查该操作是否导致了树 ...

  2. 真c++ 从二叉树到红黑树(4)之二叉平衡搜索树AVL

      此文章为从二叉树到红黑树系列文章的第四节,主要介绍介绍二叉平衡搜索树AVL,当你理解了AVL,红黑树你就理解了一半了! 文章目录 一.前面文章链接~(点击右边波浪线可以返回目录) 二.由BST引入 ...

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

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

  4. 数据结构---二叉平衡排序树的删除

    数据结构-二叉平衡排序树的删除 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> typedef struct avlT ...

  5. 数据结构与算法——二叉平衡树(AVL树)详解

    文章目录 AVL树概念 不平衡概况 四种平衡旋转方式 RR平衡旋转(左单旋转) LL平衡旋转(右单旋转) RL平衡旋转(先右后左双旋转) LR平衡旋转(先左后右单旋转) java代码实现 总结 AVL ...

  6. 【Python数据结构】——二叉平衡树AVL(查找、构建、删除、插入、打印、遍历)

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/7/28 20:57 # @Author : @linlianqin # @S ...

  7. 二叉平衡树(AVL树)详细理解

    二叉平衡树(AVL树) AVL树插入元素结论 单旋转: 双旋转: 如果看到后面会发现,我下面举得列子,类型一和类型三和我结论里面的有点不一样,那是因为类型一的节点4和类型三的节点14无论以何种方式都能 ...

  8. 《数据结构与算法之二叉平衡树(AVL)》

    说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若在阅 ...

  9. 看动画学算法之:平衡二叉搜索树AVL Tree

    简介 平衡二叉搜索树是一种特殊的二叉搜索树.为什么会有平衡二叉搜索树呢? 考虑一下二叉搜索树的特殊情况,如果一个二叉搜索树所有的节点都是右节点,那么这个二叉搜索树将会退化成为链表.从而导致搜索的时间复 ...

最新文章

  1. 想象中的论文答辩和真实的论文答辩!哈哈哈哈哈哈……
  2. 2019-11-08 频域的直观感受
  3. 新建sublime 的python代码文件时自动在头部增加几行常用代码
  4. Lost Cows POJ - 2182(线段树)
  5. python窗口显示表格_Python爬虫之GUI图表
  6. java 运行 .jar 文件乱码
  7. Java之消息摘要(MD5)
  8. django启动服务器失败-已解决
  9. POJ-1699 Best Sequence 状态压缩DP
  10. 电动自动吞吐式IC卡RFID读写器EMV模块HX150进卡命令
  11. 企业微信工具栏获取外部联系人unionid
  12. 大华出入口管理系统H710服务器配置,DH-DSS-H710S2 大华出入口综合管理系统 停车场收费 支持人脸相机设备添加...
  13. 深度卷积神经网络基本介绍
  14. twaver html5软件价格,TWaver数据中心可视化软件
  15. Linux usbkey自动登陆,Usbkey怎么用?|3分钟让您了解Usbkey使用方法
  16. 集成学习-Stacking与Blending与泰坦尼克号特征工程(DataWhale第二期)
  17. Solr Facet 统计查询
  18. 国内首部创业纪实电影《燃点》进校园:如何靠近成功的2%
  19. oracle查询某个时间段是否在另外一个时间段之内
  20. Python爬取【京东商城】商品信息实例(末尾有关于价格的爬取)

热门文章

  1. 免费 epub 阅读器与文档管理器
  2. 【046】人类基准-测试记忆力和反应速度等素质
  3. GBase8s数据库支持中文生僻字注意事项
  4. Python 爬虫的小案例(男性福利)
  5. java绝对素数_java实现找素数
  6. 数字信号处理实验二:数字语音信号与频谱分析
  7. 在VScode中创建Java项目
  8. 项目总结 -- RFID 读写器上位机软件
  9. 单片机课程设计--网络时钟
  10. Crypto Wednesday No.20 :一起聊聊隐私币