浅析平衡二叉树的四种旋转

二叉树:
1、若左子树不空,则左子树上所有节点的值均小于它的根节点的值;
2、若右子树不空,则右子树上所有节点的值均大于它的根节点的值;
3、左、右子树也分别为二叉排序树;
4、没有键值相等的节点;
5、平衡二叉树中每个节点的左子树和右子树高度之差的绝对值小于等于1

在二叉树插入数据后会有四种类型,为了符合平衡二叉树左孩子与右孩子高度只差绝对值小于等于1,那么就会形成四种旋转变形,以达到平衡。

一.LL型

如图所示,插入数据10,8,5,根据二叉树插入数据规则,因为8小于10,那8就在10的左边,然后插入数据5,5小于10,5又小于8,5就在8的左边,就会形成LL型。此时不符合平衡二叉树定义,为了达到左右孩子平衡,需要进行旋转。10经过一次右旋,结果左右孩子平衡。

二.LR型

如图所示,插入数据10,8,9,根据二叉树插入数据规则,因为8小于10,那8就在10的左边,然后插入数据9,9小于10,但9大于8,9就在8的右边,就会形成LR型。此时不符合平衡二叉树定义,为了达到左右孩子平衡,需要进行旋转。9经过一次左旋,形成LL型,为了达到平衡,此时10再经过一次右旋,结果左右孩子平衡。

三.RR型

如图所示,插入数据10,12,15,根据二叉树插入数据规则,因为12大于10,那12就在10的右边,然后插入数据15,15大于10,15又大于12,15就在12的右边,就会形成RR型。此时不符合平衡二叉树定义,为了达到左右孩子平衡,需要进行旋转。10经过一次左旋,结果左右孩子平衡。

四.RL型

如图所示,插入数据10,12,11,根据二叉树插入数据规则,因为12大于10,那12就在10的右边,然后插入数据11,11大于10,但11小于12,11就在12的左边,就会形成RL型。此时不符合平衡二叉树定义,为了达到左右孩子平衡,需要进行旋转。11经过一次右旋,形成RR型,为了达到平衡,此时10再经过一次左旋,结果左右孩子平衡。

浅析平衡二叉树的四种旋转相关推荐

  1. 详细剖析平衡二叉树的四种旋转(附C++代码)

    经过一天的学习,笔者发现网上少有人剖析平衡二叉树为何要分为四种旋转情况(尤其是LR型和RL型旋转),学习起来感觉云里雾里.查阅相关资料后,笔者整理了以下几种解释,其中夹杂着笔者自己的理解(笔者也是初学 ...

  2. 自平衡二叉树(AVL)及四种旋转方式详解

    推荐可视化插入.删除节点的二叉树网站:AVL Tree Visualzation (usfca.edu) 1. 概述 AVL树是一种自平衡二叉搜索树,他是搜索二叉树(BST)的优化,它在每次插入或删除 ...

  3. 手撕AVL树之平衡因子完成四种旋转

  4. 2021-10-11 ! AVL树 及其平衡调整 四种情况 恋上数据结构笔记 (考过)

    b站有个up讲的很详细 https://www.bilibili.com/video/BV1xE411h7dd?from=search&seid=11383601726930144190&am ...

  5. 树的四种遍历案例和AVL树的旋转的四种情况

    树与二叉树 一, 树的基本术语 树中一个结点的子结点个数称为该结点的度, 树中结点的最大度数称为树的度.如结点B的度为2,结点D的度为3,树的度为3. 度大于0的结点称为分支结点(又称非终端结点),度 ...

  6. 浅析运动健身APP开发的四种模式

    健身行业是在"互联网+"的大潮中最早觉醒的行业之一,自2015年可谓运动健身APP开发爆发后,各类运动健身APP和智能硬件层出不穷,运动健身APP开发应用市场已被创业者视为开疆破土 ...

  7. 浅析网站域名申请注册的四种常见方式

    网站建设之前我们需要考虑选择一个简单易记的网站域名,这对于企业的网络营销推广有着重要作用.因此,当我们在申请注册网站域名时,如果大家是第一次没有什么经验,那么可以参考一些相关材料或者是委托域名注册公司 ...

  8. it有啥好咨询的_蓝盟浅析,IT外包的四种常用方式

    IT外包服务主要分为IT运维外包和软件开发外包,对于软件开发外包主要偏于研发类型,在本文中主要讨论IT运维外包. 上海蓝盟认为,IT运维外包主要包含IT服务外包.IT采购.弱电工程.系统集成和云服务等 ...

  9. icc 颜色 c语言,浅析颜色在icc中四种不同的转换方式

    在我们使用频率最高的图像处理软件Photoshop中,我们可以在颜色设置项中的转换选项中发现"意图"一项中有可感知.饱和度.相对比色和绝对比色四个选项,这是不同颜色在icc之间转换 ...

最新文章

  1. 深入理解java虚拟机---读书笔记
  2. netty权威指南学习笔记五——分隔符和定长解码器的应用
  3. lass翻译_【专题讲座】政务翻译人才培训系列讲座(1)
  4. matlab pdist
  5. Java动态编译执行
  6. Go_笔试题记录-不熟悉的
  7. 鸿蒙唯独没有手机,想用鸿蒙OS,却没有华为手机?华为高层:还有1亿台设备可体验...
  8. git安装 perl ubuntu_ubuntu下安装git
  9. 智能会议系统(8)---流媒体中用到的几个协议简介
  10. 火车在提速,生活在加速,快节奏的生活让人们逐渐失去了驻足思考的能力,人们好像已经习惯抱团去做某一件事情,完全不顾这件事情到底适合不适合自己,我在想他们总...
  11. Sky公司的爱丁堡数据中心的能源效率纳入欧盟能效标准
  12. python类中的self参数和cls参数
  13. wps怎么全选所有页_wps word中怎么全选一页
  14. ps磨皮插件专用智能磨皮插件 AI算法美颜 提高P图效率
  15. 2022秋招前端面试题(一)(附答案)
  16. Altium Designer Summer 09绘制3D封装库
  17. 由DatePicket和TimePicker扩展延伸其他控件
  18. ubuntu下没有中文输入法的解决办法!
  19. POJ 1647 One-move checkmate G++
  20. 20 | WAF:如何为漏洞百出的Web应用保驾护航?

热门文章

  1. CHOOSE函数介绍:
  2. Appium如何关闭APP?
  3. 远程重启h3c路由器_重启h3c路由器命令 h3c路由器登录地址
  4. C#winform窗体控件之toolStrip
  5. B端产品经理-官网设计总结
  6. 轻松记账工程冲刺第六天
  7. SWT集成chromium
  8. 中国陶瓷纤维市场现状调研及投资前景方向预测报告2022年版
  9. 软件测试过程与方法_第3单元
  10. SpringBoot学习(十九)之使用 Caching- - EhCache