二叉平衡(AVL)树中的 LL旋转、RR旋转、LR旋转、RL旋转 的详细解释
文章目录
- 前言
- 一、旋转的分类
- 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旋转 的详细解释相关推荐
- 平衡二叉树-AVL树(LL、RR、LR、RL旋转)
平衡二叉树的定义: 任意的左右子树高度差的绝对值不超过1,将这样的二叉树称为平衡二叉树,二叉平衡树前提是一个二叉排序树. 平衡二叉树的插入: 二叉平衡树在插入或删除一个结点时,先检查该操作是否导致了树 ...
- 真c++ 从二叉树到红黑树(4)之二叉平衡搜索树AVL
此文章为从二叉树到红黑树系列文章的第四节,主要介绍介绍二叉平衡搜索树AVL,当你理解了AVL,红黑树你就理解了一半了! 文章目录 一.前面文章链接~(点击右边波浪线可以返回目录) 二.由BST引入 ...
- 五.树,二叉树,二叉搜索树(BST)和自平衡二叉搜索树(AVL)
1.树 树是一种数据结构 比如:目录结构 树是一种可以递归定义的数据结构 树是由n个节点组成的集合: 如果 n=0, 那这是一颗空树 如果 n>0, 那存在1个节点作为树的根节点,其他节点可以分 ...
- 数据结构---二叉平衡排序树的删除
数据结构-二叉平衡排序树的删除 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> typedef struct avlT ...
- 数据结构与算法——二叉平衡树(AVL树)详解
文章目录 AVL树概念 不平衡概况 四种平衡旋转方式 RR平衡旋转(左单旋转) LL平衡旋转(右单旋转) RL平衡旋转(先右后左双旋转) LR平衡旋转(先左后右单旋转) java代码实现 总结 AVL ...
- 【Python数据结构】——二叉平衡树AVL(查找、构建、删除、插入、打印、遍历)
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/7/28 20:57 # @Author : @linlianqin # @S ...
- 二叉平衡树(AVL树)详细理解
二叉平衡树(AVL树) AVL树插入元素结论 单旋转: 双旋转: 如果看到后面会发现,我下面举得列子,类型一和类型三和我结论里面的有点不一样,那是因为类型一的节点4和类型三的节点14无论以何种方式都能 ...
- 《数据结构与算法之二叉平衡树(AVL)》
说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若在阅 ...
- 看动画学算法之:平衡二叉搜索树AVL Tree
简介 平衡二叉搜索树是一种特殊的二叉搜索树.为什么会有平衡二叉搜索树呢? 考虑一下二叉搜索树的特殊情况,如果一个二叉搜索树所有的节点都是右节点,那么这个二叉搜索树将会退化成为链表.从而导致搜索的时间复 ...
最新文章
- 想象中的论文答辩和真实的论文答辩!哈哈哈哈哈哈……
- 2019-11-08 频域的直观感受
- 新建sublime 的python代码文件时自动在头部增加几行常用代码
- Lost Cows POJ - 2182(线段树)
- python窗口显示表格_Python爬虫之GUI图表
- java 运行 .jar 文件乱码
- Java之消息摘要(MD5)
- django启动服务器失败-已解决
- POJ-1699 Best Sequence 状态压缩DP
- 电动自动吞吐式IC卡RFID读写器EMV模块HX150进卡命令
- 企业微信工具栏获取外部联系人unionid
- 大华出入口管理系统H710服务器配置,DH-DSS-H710S2 大华出入口综合管理系统 停车场收费 支持人脸相机设备添加...
- 深度卷积神经网络基本介绍
- twaver html5软件价格,TWaver数据中心可视化软件
- Linux usbkey自动登陆,Usbkey怎么用?|3分钟让您了解Usbkey使用方法
- 集成学习-Stacking与Blending与泰坦尼克号特征工程(DataWhale第二期)
- Solr Facet 统计查询
- 国内首部创业纪实电影《燃点》进校园:如何靠近成功的2%
- oracle查询某个时间段是否在另外一个时间段之内
- Python爬取【京东商城】商品信息实例(末尾有关于价格的爬取)