平衡二叉树的调整(详解 LL、RR、LR、RL)
浙江大学讲解视频
平衡二叉树(AVL)的定义:
- 任一结点的左右子树高度差的绝对值小于等于1,绝对值就是平衡因子
- 任一结点的左右子树均为AVL树
- 平衡二叉树也可以是一个空树
平均查找长度(ASL)(查找效率) (ASL=所有查找次数X*查找次数为X的结点数相加)/总结点数
例:
平衡二叉树的调整
当向一棵AVL树中插入一个新的结点,有可能会破坏树的平衡,这时就需要调整这棵树,根据不同的插入位置,一共有四种调整方法,在调整的过程中要注意,一定要满足二叉搜索树的性质
插入位置 | 如何调整 |
---|---|
插入结点在发现者右子树 的右边
|
RR调整,右单旋 |
插入结点在发现者左子树 的左边
|
LL调整,左单旋 |
插入结点在发现者左子树 的右边
|
LR调整,左右双旋 |
插入结点在发现者右子树 的左边
|
RL调整,右左双旋 |
注,发现者是第一个不满足这棵树是平衡二叉树的结点,如果有多个结点同时不满足,就选最靠近下面的那个结点作为发现者,
右单旋(RR调整)
插入结点在发现结点的右子树的右边
插入13时发现5的平衡因子被破坏了,破坏者在发现结点右子树的右边,所以应该对这棵树进行右单旋(RR单旋),让树向左边转,在旋转过程中让被破坏者的右子树作为调整后的跟结点.在调整过程中发现8这个结点会有冲突,那么就按照二叉搜索树的性质将8放在5的右边,调整结果如下
左单旋(LL调整)
插入结点在发现结点左子树的左边
插入2时发现4和5同时为发现者,这时就选择距离插入结点较近的点作为发现者。因为插入结点在发现者左子树的左边,所以应该对这棵树进行左单旋(LL单旋),让树向右边转,调整结果如下
左右双旋(LR双旋)
插入结点在发现结点左子树的右边
一定要记得先右单旋,再左单旋,以4这棵树
右单旋以后结果如下
发现这棵平衡二叉树还不平衡,再以5这棵树
左单旋,结果如下
右左双旋(RL双旋)
插入结点在发现结点右子树的左边
一定要记得先左单旋,再右单旋,以6这棵树
左单旋以后结果如下
发现这棵平衡二叉树还不平衡,再以3这棵树
右单旋,结果如下
注意:在双旋过程中,注意不要让双旋的名称误解了,名称仅仅是表示
插入结点
相对于发现结点
的位置,左右双旋
是先右单旋
在左单旋
,右左双旋
是先左单旋
再右单旋
如有错误之处,欢迎评论
平衡二叉树的调整(详解 LL、RR、LR、RL)相关推荐
- 王者荣耀体验服服务器未响应9月16,王者荣耀体验服9月16日更新维护及英雄调整详解介绍...
王者荣耀体验服9月16日更新了什么?相信很多小伙伴们都非常的期待吧,本次更新对部分的英雄进行了一系列的改动,下面是小编带来的王者荣耀体验服9月16日更新维护及英雄调整详解,感兴趣的一起来看下吧! 王者 ...
- 巅峰战舰今日服务器全部维护,巅峰战舰12月7日更新维护公告 12.7新增玩法和舰船属性调整详解[图]...
类型:策略卡牌 大小:827.38MB 评分:10 平台: 巅峰战舰今天进行了临时维护更新,具体更新了什么内容?估计小伙伴们不太清楚,没关系,下面是小麦整理出来的12.7新增玩法和舰船属性调整详解,希 ...
- 王者服务器维护8.25,上单位移全部削弱射手春天到来!王者荣耀体验服8.25英雄调整详解...
王者荣耀体验服8月25号进行了一波更新!对于现在主流的上单战士的位移能力全部削弱,几乎无一幸免,虽然补偿了几个英雄的爆发伤害,但是喜闻乐见的是花木兰和宫本却只削弱没加强!一起俩看看本次改动的详解吧! ...
- 平衡二叉树(AVL树)-详解平衡调整
平衡调整: (注意:平衡调整只是平衡调整,没有进行结点的插入) LL型调整: (带阴影的小框表示插入的结点) 代码如下: AVLNode *AVLTree::LL_Rotate(AVLNode *a) ...
- (王道408考研操作系统)第二章进程管理-第二节4:调度算法详解2(RR、HPF和MFQ)
文章目录 一:时间片轮转调度算法(RR) 二:优先级调度算法(HPF) 三:多级反馈队列调度算法(MFQ) 总结 进程调度算法也称为CPU调度算法,操作系统内存在着多种调度算法,有的调度算法适用于作业 ...
- (王道408考研操作系统)第二章进程管理-第二节6、7:调度算法详解2(RR、HPF和MFQ)
文章目录 一:时间片轮转调度算法(RR) 二:优先级调度算法(HPF) 三:多级反馈队列调度算法(MFQ) 总结 进程调度算法也称为CPU调度算法,操作系统内存在着多种调度算法,有的调度算法适用于作业 ...
- CSS字体样式调整详解
大家好,今天分享一下CSS字体样式调整 我们对文本样式做以下的调整 1.颜色 2.文本对齐的方式 3.首行缩进 4.行高 5.装饰 写HTMl代码: <!DOCTYPE html> < ...
- BGP 路由反射器详解,RR反射簇与RR的防环机制介绍与实验
一.什么是RR RR(Route Reflector):路由反射器 由于水平分割的原因,为了保证AS内所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联. 然而实现IBGP ...
- AVL树(LL,RR,LR,RL)
AVL树是最早发明的自平衡二叉搜索树之一. 平衡因子(Balance Factor):某结点的左右子树的高度差 AVL树的特点 每个结点的平衡因子只可能是1,0,-1(绝对值<=1,如果超过,称 ...
最新文章
- ConcurrentHashMap实现原理及源码分析
- linux c++编写访问mysql程序,访问数据库出错,解决方法
- Cloudify — Overview
- net use命令详解
- 优酷开放SDK之setOnTimeOutListener
- Android应用程序签名详解
- Convolutional Neural Networks for Visual Recognition 1
- 2021双11上云狂欢节 | 爆款产品底价全面开售
- 安卓开发mysql数据库_Android编程之数据库的创建方法详解
- python consul
- 【模板】线段树(区间加)
- Unity3D AssetBundle相关
- 在Ubuntu 20.04(含Xubuntu、Linux Mint Cinnamon等衍生版)上安装Wine QQ,获得更佳的使用体验
- 2020年面向前端开发人员的10个很棒的 JS 库
- PLA-PEG2000-Maleimide,聚乳酸和马来西安亚楠修饰的PEG,MAL-PEG2000-PLA
- Linux内核kernel panic机制浅析
- php项目怎么配置admin,PHPadmin配置
- 家谱树 (并查集拓扑排序)
- 华为模拟器配置S5700交换机OSPF案例
- 1.pygame简介