Java数据存储结构——平衡二叉树

news/2024/9/19 12:06:44 标签: java, intellij-idea, 数据结构

文章目录

      • 22.1.3 平衡二叉树
        • 22.1.3.1 LL
        • 22.1.3.2 LR
        • 22.1.3.3 RR
        • 22.1.3.4 RL

22.1.3 平衡二叉树

平衡二叉树的特点:

  • 二叉树左右两个子树的高度差不超过1
  • 任意节点的左右两个子树都是一颗平衡二叉树

在原来的平衡二叉树中,新增数据会破坏平衡性,所以需要进行旋转最小不平衡子树保持平衡。

在这里插入图片描述

确定支点:从添加的节点开始,不断的往父节点找不平衡的节点。

右旋:
   1.以不平衡的点作为支点
   2.将根节点的左侧往右拉
   3.原先的左子节点变成新的父节点,并把多余的右子节点出让,给已经降级的根节点当左子节点。
   
左旋:
   1.以不平衡的点作为支点
   2.将根节点的右侧往左拉
   3.原先的右子节点变成新的父节点,并把多余的左子节点出让,给已经降级的根节点当右子节点。
22.1.3.1 LL

左左:当根节点左子树的左子树有节点插入,导致二叉树不平衡。

以不平衡的点作为支点,进行一次右旋即可。

如图:分别新增数据 1 和 3在根节点左子树的左子树 ,破环了原有的平衡性,需要右旋一次。可知 7 为不平衡的节点,将7 作为支点进行右旋

在这里插入图片描述

右旋一次后,如图:

在这里插入图片描述

22.1.3.2 LR

左右:当根节点左子树的右子树有节点插入,导致二叉树不平衡。

需要先局部左旋,再整体右旋。

如图,新插入 数据6 在根节点左子树的右子树,破环平衡,需要先局部左旋,再整体右旋。
在这里插入图片描述

先局部左旋:

在这里插入图片描述

在这里插入图片描述

再整体右旋:

在这里插入图片描述

22.1.3.3 RR

右右:当根节点右子树的右子树有节点插入,导致二叉树不平衡。

在这里插入图片描述

以不平衡的点作为支点,进行一次左旋即可。

在这里插入图片描述

22.1.3.4 RL

右左:当根节点右子树的左子树有节点插入,导致二叉树不平衡。

需要先局部右旋,再整体左旋。

如图,新插入 数据68在根节点右子树的左子树,破环平衡,需要先局部右旋,再整体左旋。

在这里插入图片描述

先局部右旋,如图:

在这里插入图片描述

在这里插入图片描述

再整体左旋,如图:

在这里插入图片描述


http://www.niftyadmin.cn/n/5662997.html

相关文章

Linux 基础入门操作-实验一 GCC使用

Linux 基础入门 前言 1 串口登录 本次登录可以采用串口登录,用usb线接入到系统,利用串口平台进行登录; 2 网口登录 2.1 路由器转接 电脑和开发板都接入路由器,路由器自动分开ip地址; 利用ipscan这个软件&#xf…

Flip动画的实现示例demo

Flip动画的实现示例demo 文章说明核心代码效果展示Flip动画工具类的封装 文章说明 文章主要为了学习flip动画的实现思路&#xff0c;并且采用此示例效果来理解该实现思路的含义 参考渡一前端袁老师的讲解视频 核心代码 采用简单的y轴变化的动画效果为示例 <!DOCTYPE html>…

中电金信高级PMO总监刘琳受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 中电金信软件有限公司交付管理部高级PMO总监刘琳先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“构建卓越的项目经理培养体系”。大会将于10月26-27日在北京举办&#xff0…

5-----RYZ维修工具 操作界面预览与功能操作解析 刷机 解锁 修复参数等等

以上是工具选项功能的界面预览 。通过预览可以看到很多功能选项。此类工具涵盖了很多操作区域。需要根据自己机型的实际需求来操作。根据开发者的描述。此工具有一下功能。包含mtk刷机 分区修复。9008刷机 备份基带efs等等。 高通操作区域 高通修复串码 高通修改写入基带qc…

【数据结构】字符串与JSON字符串、JSON字符串及相应数据结构(如对象与数组)之间的相互转换

前言&#xff1a; 下面打印日志用的是FastJSON依赖库中的 Log4j2。依赖&#xff1a; <!-- Alibaba Fastjson --> <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.80</version> …

TinyRedis项目复盘

https://build-your-own.org/redis/ 事件循环怎么实现的 首先我将连接包装为一个 Connect 类&#xff0c;它包含了 socket fd&#xff0c;读写缓冲区&#xff0c;连接状态&#xff08;这个连接是发送数据还是接收数据&#xff09;等成员属性 我会在全局维护一个从 socket fd…

Andrej Karpathy谈AI未来:自动驾驶、Transformer与人机融合

引言 在人工智能领域&#xff0c;Andrej Karpathy 是一个无法忽视的名字。从他早期在 OpenAI 的工作&#xff0c;到后来担任 Tesla 的 AI 主管&#xff0c;他在自动驾驶、深度学习等方面的贡献广为人知。最近&#xff0c;卡帕西做客了著名的播客节目 No Priors&#xff0c;他在…

matlab处理函数3

1. 直方图均衡化的 Matlab 实现 1.1 imhist 函数 功能&#xff1a;计算和显示数字数字图像的色彩直方图 格式&#xff1a;imhist(I,n) imhist(X,map) 说明&#xff1a;imhist(I,n) 其中&#xff0c;n 为指定的灰度级数目&#xff0c;缺省值为256&#xff1b;imhist(X…