首页 > 其他分享 >数据结构--二叉平衡树

数据结构--二叉平衡树

时间:2023-07-19 11:15:18浏览次数:30  
标签:左子 结点 排序 -- 右子 二叉 平衡 数据结构

二叉平衡树

回顾:二叉排序树的查找

image-20230719100259822

二叉排序树的不平衡会影响查找效率,所有我们要尽量让二叉树的形态均衡.

image-20230719100344123

AVL树(平衡二叉树)

  1. 必须是二叉排序树

  2. 左子树和右子树的高度之差的绝对值小于等于1

  3. 左子树和右子树也是平衡二叉排序树

    平衡因子

    该结点左子树与右子树的高度差.

    平衡因子=结点左子树的高度-结点右子树的高度

image-20230719101112497

判断平衡二叉树

image-20230719101403811

对于一个右n个结点的AVL树,其高度保持再O(logn)数量级,ASLA也保持在O(logn)量级.

平衡调整办法1

有可能导致失衡,即出现平衡因子大于1的结点

如果在一颗AVLA树中插入一个新结点后造成失衡,则必须重新调整树的结构,让其恢复平衡

image-20230719104448242

平衡调整的四种类型

A:失衡结点 不止一个失衡结点时,为最小失衡子树的结点

B:A结点的孩子,C结点的双亲.

C:插入新节点的子树.

image-20230719104906630

调整原则:

  1. 降低高度
  2. 保持二叉排序树性质

image-20230719105432457

标签:左子,结点,排序,--,右子,二叉,平衡,数据结构
From: https://www.cnblogs.com/harper886/p/17565021.html

相关文章

  • mysql如何判断是不是数字?
    在MySQL中,可以使用以下方法来判断一个值是否是数字:1.使用内置函数:MySQL内置了一些函数,如ISNUMERIC()、CAST()、CONVERT()等,可以用来判断一个值是否为数字。例如,使用ISNUMERIC()函数判断一个字符串是否是数字,可以执行以下查询: SELECTISNUMERIC('12345');--返回1,表示是数字......
  • conda 中显示channel 和基本环境
     001、[liujiaxin01@PC1~]$condaconfig--showchannelschannels:-defaults 002、[liujiaxin01@PC1~]$condaconfig--showdefault_channelsdefault_channels:-https://repo.anaconda.com/pkgs/main-https://repo.anaconda.com/pkgs/r 003、......
  • 一中校运会之百米跑
    题目背景在一大堆秀恩爱的**之中,来不及秀恩爱的苏大神踏着坚定(?的步伐走向了100米跑的起点。这时苏大神发现,百米赛跑的参赛同学实在是太多了,连体育老师也忙不过来。这群b事真多这时体育老师发现了身为体育委员的苏大学神,便来找他帮忙。可是苏大神需要热身,不然跑到一半就会抽(筋)......
  • 苹果系统M系列芯片编译JDK18
    苹果系统M系列芯片编译JDK18MacosAppleSiliconBuildopenJDK为什么编译之前听blindpirate大佬说过,为了解决某个fastjson的bug编译了一下jdk让其报出更详细的异常信息.最近在读<深入理解java虚拟机(第三版周志明)>,第一章就是使用ubuntu18编译个openjdk12,以供接下......
  • 解决直播间源码音视频不同步问题的有效方式
     随着网络技术的发展和移动设备的普及,电视、电脑、手机等数码产品越来越智能,我们不管是在家或是在外面都可以运用不同的数码产品去看剧或是短视频等,但可能很多人遇到过这样一种情况:当我们在看剧或是短视频的时候,可能出现声音与画面不对等的情况,举个例子,视频画面进度到了第十分钟......
  • MySQL在分页查询时的limit深分页问题
    在平时业务中我们会发现当分页数据特别大的时候,会出现SQL很慢的情况,下面我们来分析下为什么会出现这种情况以及如何去解决一、limit深分页问题解析我们有如下一张表CREATETABLEaccount(idint(11)NOTNULLAUTO_INCREMENTCOMMENT'主键Id',namevarchar(255)DEFAU......
  • 免费下载1000+工程建筑、设计领域资料,助力打造出高质量设计方案和汇报场景!
    作为一名工程设计、施工人员,设计方案制作、工程汇报场景搭建的情景再常见不过。日常需要的模型是必不可少的,但最令人头大的问题是如何寻找方案素材。想要表达的信息越多,素材获取就越是苦恼!有没有一款软件能够集方案三维汇报展示与模型数据下载为一体呢?当然有。图新说,作为国产三......
  • 超详细的 pytest 教程 (二) 之测试报告篇
    这个章节主要给大家介绍pytest如何集成测试报告。pytest本身是没有生成测试报告的功能,但是pytest中有很多插件,我们可以通过插件来生成测试报告。下面会给大家介绍两个生成报告的方式。一个是生成html报告,一个是集成allure报告平台来展示测试报告。一、生成HTML报告1.1、安装......
  • python笔记:第十章开箱即用的模块
    1.模块import模块名1.1模块就是程序任何python程序都可以作为模块导入,并标明程序(模块)的位置importsyssys.path.append('路径')importhello//在同一文件夹下会在该文件夹里面自动生成一个__pycache__文件夹,包含处理后的文件。(可删除,无影响)在hello.py里面编写函......
  • 软件设计七项原则
    一、软件设计七项原则总结归纳设计原则归纳总结开闭原则对扩展开放,对修改关闭里氏替换原则不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义依赖倒置原则高层不应该依赖低层,要面向接口编程单一职责原则一个类只干一件事,实现类要单一......