平衡二叉树旋转机制

news2024/11/17 8:50:20

概念

        平衡二叉树的旋转机制是一种通过对树进行旋转操作来保持其平衡的方法。

分类

 平衡二叉树的旋转机制包括两种基本类型的旋转:左旋和右旋,以及它们的组合。

左旋

        左旋是将一个节点的右子节点旋转到它的位置上,同时将该节点移到其左侧,并重新连接其子节点。

 简单左旋步骤

  • 确定支点:从添加的节点开始,不断地往父节点找不平衡地节点
  • 以不平衡的点作为支点
  • 把支点左旋降级,变成左子节点
  • 晋升原来的右子节点

复杂左旋步骤

  • 确定支点:从添加的节点开始,不断地往父节点找不平衡地节点
  • 以不平衡的点作为支点
  • 将根节点的右侧往左拉
  • 原来的右子节点变为新的根节点,并把多余的左子节点拿出来,给已降级的根节点当右子节点

右旋 

        右旋是将一个节点的左子节点旋转到它的位置上,同时将该节点移到其右侧,并重新连接其子节点。

 简单右旋步骤

  • 确定支点:从添加的节点开始,不断地往父节点找不平衡地节点
  • 以不平衡的点作为支点
  • 把支点右旋降级,变成右子节点
  • 晋升原来的左子节点

 复杂右旋步骤

  • 确定支点:从添加的节点开始,不断地往父节点找不平衡地节点
  • 以不平衡的点作为支点
  • 将根节点的左侧往右拉
  • 原来的左子节点变为新的根节点,并把多余的右子节点拿出来,给已降级的根节点当左子节点

 平衡二叉树需要旋转的情况

  • 左左:根节点的左子树的左子树有节点插入,导致二叉树不平衡【一次旋转】
  • 左右:根节点的左子树的右子树有节点插入,导致二叉树不平衡【先局部左旋,在整体右旋】
  • 右右:根节点的右子树的右子树有节点插入,导致二叉树不平衡【一次旋转】
  • 右左:根节点的右子树的左子树有节点插入,导致二叉树不平衡【先局部右旋,在整体左旋】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/493120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于低代码开发,你是真的了解了吗?

在低代码开发已是大势所趋的今天,不少企业都切身感受到了低代码开发带来的便利。低代码开发平台的优势在当下数字化浪潮中,为企业提供了定制专属的数字化解决方案。 低代码本身没有太强的行业属性,这也让低代码开发平台能够更加灵活地适应不同…

嵌入式 QT 界面布局管理

目录 1、实例程序功能 2、界面组件布局 2.1 界面组件的层次关系 2.2 布局管理 2.3 伙伴关系和Tab顺序 1、实例程序功能 创建一个 Widget Application 项目 samp2_2, 在创建窗体时选择基类 QDialog ,生成的类命名为 QWDialog ,并选择…

Python实用记录(十三):python脚本打包exe文件并运行

文章目录 打包准备文件准备环境安装 具体运行第一步第二步第三步 注意 打包准备 文件准备 这里准备一个简单的python代码(打开电脑摄像头) import cv2 if __name__ __main__:cap cv2.VideoCapture(0)ret, frame cap.read()while ret:ret, frame c…

希亦洗地机和添可洗地机哪个好用?口碑洗地机详细对比

在当今这个科技发达的社会,为了能够帮助人们高效率的工作,各色各样的发明不断出现。扫地、拖地是我们日常生活中再普通不过的一项家务了,对于小型的房子而言打扫起来就比较轻松,对于繁忙的上班族打扫空间较大的房子就很困难&#…

Undo Log详解

undo log 基本概念 undo log是一种用于撤销回退的日志,在数据库事务开始之前,MySQL会先记录更新前的数据到undo log日志文件里面,当事务回滚时或者数据库崩溃时,可以利用 undo log来进行回退 Undo Log产生和销毁:Und…

redis(2)

缓存:缓存是一个高速数据交换的存储器,使用它可以迅速的访问和操作数据 因为单体应用已经不适用于现在的环境了,所以最终变成分布式系统,本地缓存已经不适用了 1)比如说张三用户访问了应用程序nginx把请求分配给A服务器 A机器查询数据库,并且把数据库的结…

模型实战(11)之win10下Opencv+CUDA部署yolov5、yolov8算法

win10下Opencv+CUDA部署yolov5、yolov8算法 测试环境:AMDRH7000+RTX3050+win10+vs2-10+opencv455+cuda11.7关于opencv470+contrib+cuda的编译,可以详见:Win10下Opencv+CUDA联合编译详细教程本文代码同时支持yolov5、yolov8两个模型,详细过程将在文中给出,完整代码仓库最后…

自动化测试真的能提效吗?怎么才能真正掌握自动化测试技巧呢?

近年来,随着软件开发速度的提高,自动化测试已经成为了一个必要的环节。但是,对于自动化测试,有些人认为它能够大幅提升效率,而有些人则认为自动化测试无法替代手工测试,并且实施自动化测试需要投入大量的时…

vue3 - 超详细头像裁剪并上传到服务器,支持按照自定义比例裁切图片效果组件插件(详细示例源码教程,一键复制运行开箱即用)

效果图 大部分都贼难用,而且全是bug。。并且很少有 vue3的,全是 vue2。。 本博客实现了在 vue3.js 项目中,实现图像上传后并按一定的比例进行裁剪的示例功能源码,支持各种参数、样式修改, 示例有 Element Plus + Vue3.js 版本,也有纯 Vue3.js 版本(无 UI 框架搭配),按…

【机器学习】西瓜书课后习题参考答案—第一章

记录西瓜书课后习题的思考与参考答案。 1.1 表1.1中若只包含编号为1和4的两个样例,试给出相应的版本空间。 答: 版本空间:与训练集一致的“假设集合”,称之为“版本空间”(version space) 只包含编号为1和…

Vue-cli搭建项目(包含Node.js安装和ElementUI安装)

目录 一、vue-cli 二、Node.js npm: Node.js安装: 测试: 三、Vue-cli搭建项目 使用HBuildex 创建一个vue.js项目 创建的自己的组件: 组件路由: 四、ElementUI安装 1.ElementUI下载: 2.在main.js中…

Echarts图表X轴文本过长导致展示不全

今天就遇到如题目所说问题。遇到问题当然取看官方文档喽,链接奉上ECharts-axis 博主使用的ECharts版本号为5.4.5 这个问题效果图如下: 可以看到x轴文本太长,导致部分x轴标签无法正常显示,在这里提供两种解决办法,并告诉…

OSI七层网络模型+TCP/IP四层模型

OSI七层模型: 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就…

6、Flutterr聊天界面网络请求

一、准备网络数据 1.1 数据准备工作 来到网络数据制造的网址,注册登录后,新建仓库,名为WeChat_flutter;点击进入该仓库,删掉左侧的示例接口,新建接口. 3. 接着点击右上角‘编辑’按钮,新建响应内容,类型为Array,一次生成50条 4. 点击chat_list左侧添加按钮,新建chat_list中的…

华为OD机试2023年最新题库(JAVA)

目录 华为OD机试是什么?华为OD面试流程?华为OD机试通过率高吗?华为OD薪资待遇?华为OD晋升空间?华为OD刷题列表,一天三题,刷出算法新高度,刷出人生新际遇。 大家好,我是哪…

什么是http代理504网关超时错误,要如何修复?

当你在使用 HTTP 代理时,有时候会遇到"504 网关超时"错误,这个错误看起来非常可怕,但实际上它并不是一个很难解决的问题。在本文中,我将向你介绍 504 错误的定义,以及为什么我们会遇到这个错误,同…

babysql

打开界面是一个登录框,所以直接使用的万能公式,但是没用出发了报错 结合提示来看,题目应该是过滤掉了or 尝试大小写绕过,失败了 尝试双写绕过,成功绕过限制 接下来就判断字段数,发现by也被过滤掉了 登是登上…

CAM350 PCB开短路检查指导

CAM350 PCB开短路检查指导 Layout完成后,通过DRC和华秋DFM检查没有问题后,使用CAM350进行开短路的检查,没有问题后可转交制版厂。 ①首先通过AD生成IPC文件,下图为生成步骤: File→Assembly Outputs→Test Point Repo…

新形势下,如何进行智慧园区移动应用建设?

智能化工园区通过信息化实现工业管理的数字化和网络化,实现对生产过程的全面监控和实时数据采集。这使企业能够更好地管理,及时发现问题并采取相应的措施来降低成本。此外,智慧化管理提高了企业资源的使用效率,避免浪费和重复利用…

异常___

规则:玩家是异常机器人,要突破正常机器人(防火墙)的扫描封锁攻击,到达目的地。 (1) 教学内容:指令的形式和运行方法。 简单的说就是脚本语言,指令的形式是给出固定顺序…