上一节咱们已经说过了,树的深度越深,时间复杂度也就越高。所以我们要想办法让树的深度尽量的小。

所以就产生了平衡二叉树这种东西。(什么是平衡二叉树实在是不想写了,不知道咋回事写了两次丢了两次。)

原来的时候我们有一颗很平衡的二叉树,但是现在我们进行插入元素操作就会破坏原先的二叉树使其的左右子树的深度绝对值差不是小于等于一了。

所以---我们今天就是解决这个问题的,现在开始正课

---------------------平衡二叉树的调整--------------------

在我们平衡二叉树的时候要注意的一件很重要的事情是,不论我们怎样操作,都需要保证在操作之后,二叉树还是搜索二叉树。否则就没用了。

不平衡的“被破坏者”是mar,“破坏者”是nov,nov在被破坏者右子树的右边,所以该插入称为RR插入,需要RR旋转

(右单旋)

我们首先进行正常的插入操作然后找出破坏者和被破坏者。

然后开始发现关系破坏者在被破坏者右子树的右子树上所以称为RR旋转。

这个的话也是RR旋转

下面附上LL旋转

附上 最操蛋的LR旋转。

然后是RL旋转

上面说了四种旋转方式分别是RR,LL,RL,LR。所有的旋转都可以分成这四类,在我们进行平衡二叉树这个操作的时候,我们就需要看被破坏者和破坏者之间的关系,根据他们的关系去调整 被破坏者到破坏者的沿途三个节点。即可。。。。。。

转载于:https://www.cnblogs.com/A-FM/p/5144708.html

------更快的搜索储存结构-----平衡二叉树-----------------相关推荐

  1. 搜索很久_装了SSD你还需要这个软件才更快,搜索查找文件数据从此不再等待

    在速度性能方面,HDD和SSD相比简直是云泥之别.一个7200转的HDD读写速度才最多可达200MB/S,15000转也才勉强能达到300M/S.而且HDD,速度要快,转速得快,转速越快,越是吵人.而 ...

  2. Elasticsearch:使用新的 wildcard 字段更快地在字符串中查找字符串 - 7.9 新功能

    在 Elasticsearch 7.9 中,我们将引入一种新的 "wildcard" 字段类型,该字段类型经过优化,可在字符串值中快速查找模式.这种新的字段类型采用了一种全新的方式 ...

  3. 如何设置计划任务程序 每6小时运行一次_如何使win10系统运行的更快?

    微软推出的新操作系统Windows 10越来越受到欢迎,用户越来越多,大家是不是会有这样的感觉:同一款电脑,同样的配置,为什么有的人的电脑用起来非常的流畅,而有的人就连打开个网页都卡的要命:有的人的电 ...

  4. 怎么使计算机软件运行快w10,如何使win10系统运行的更快?

    微软推出的新操作系统Windows 10越来越受到欢迎,用户越来越多,大家是不是会有这样的感觉:同一款电脑,同样的配置,为什么有的人的电脑用起来非常的流畅,而有的人就连打开个网页都卡的要命:有的人的电 ...

  5. LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。...

    Basic Compaction 为了保持LSM的读操作相对较快,维护并减少sstable文件的个数是很重要的,所以让我们更深入的看一下合并操作.这个过程有一点儿像一般垃圾回收算法. 当一定数量的ss ...

  6. 不是吧,不是吧,居然有比B+Tree更快的一种查询结构

    我们都知道MySQL中的B+Tree索引结构,对于根据某个条件查找记录是非常快的.那么,在不断追求极致的驱动下,你有没有想过MySQL会不会有比B+Tree更快的数据结构,来加速查找记录的性能呢?答案 ...

  7. DEDECMS优化教程:让搜索更快收录你的站点!

    本文将 DeDe CMS SEO 优化共分五部分: 1.网址优化 技术参数: 2.标签优化 技术参数: 3.Tag优化 技术参数: 4.结构优化 技术参数: 5.权重优化 技术参数: 一.DEDE S ...

  8. 阿里面试:分析为什么B+树更适合作为索引的结构以及索引原理

    mysql的B+树索引 查找使用了二分查找,redis 跳表也使用了二分查找法,kafka查询消息日志也使用了二分查找法,二分查找法时间复杂度O(logn); 在MySQL中,主要有四种类型的索引,分 ...

  9. 怎么设置能使电脑运行更快

    1.设定虚拟内存 硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据存取,因此存取这个档案的速度便构成影响计算机快 ...

  10. 哪个更快:堆栈分配或堆分配

    这个问题听起来很基础,但这是我与另一位与我合作的开发人员进行的辩论. 我一直在小心翼翼地在可能的地方分配东西,而不是堆分配东西. 他在和我说话,看着我的肩膀,并评论说这是不必要的,因为它们是相同的表现 ...

最新文章

  1. android跑步软件,手机跑步软件哪个好_安卓手机跑步记录软件_手机跑步app【最新】-太平洋电脑网...
  2. linux 信号_Linux信号机制
  3. 当append遇到make遇到的坑
  4. 防微博内容展示,使用Html.fromHtml(),解决内容不能换行的问题
  5. php常用编码,简介常见的编码方式
  6. Zabbix系统端口监控状态
  7. 2017北京国庆刷题Day2 afternoon
  8. java模式之工厂模式
  9. Java循环练习: 有1、2、3、4四个数字,能组成多少个无重复数字的三位数?都是多少?...
  10. 用计算机语言说我累了,我累了,真的好累(读到心酸)
  11. Java年度考核表个人工作总结_个人年度工作总结java
  12. CSI笔记【8】:基于MUSIC Algorithm的DoA/AoA估计以及MATLAB实现
  13. 2022 年红队工具和模拟工具包
  14. java聊天室数据库_课内资源
  15. 半导体物理实验 01 - | 晶体结构构建、仿真与分析
  16. 数据分析---2012美国大选献金项目数据分析
  17. 闲谈IPv6-说说IPv6地址分配和BGP
  18. 识别 CommandBar 图标的 FaceID
  19. 工业互联网和边缘计算学习总结
  20. 苹果屏幕一半失灵一半好的_抖音直播一半屏幕一半人,抖音直播双屏怎么设置的...

热门文章

  1. 南京铁道学院计算机应用,南京铁道职业技术学院铁道交通运营管理专业
  2. python 调用 c 生成数组_使用C类型如何将数组从C++函数返回到Python
  3. UGUI LongText
  4. 在unity中生成螺旋线的效果
  5. Unity中Json文件编写注意
  6. Nginx源码分析 - 基础数据结构篇 - hash表结构 ngx_hash.c(07)
  7. java date timezoneoffset_Java TimeZone getOffset()用法及代码示例
  8. bme280中文技术手册_华为认证数通高级路由交换技术高级工程师 V1.0发布通知
  9. Android Studio右下角显示当前branch名称不一致
  10. Linux的java配置及tomcat的启动