首先给大家科普下基础知识

(双旋转的时候,LR左右,RL右左,且首转以尾根节点为旋转中心,第二次旋转以尾根节点的父节点为旋转中心)

一:什么情况下二叉查找树不平衡?

答:一个节点的左子树与右子树的高度相差2 如下图。节点的左子树高为2,右子树为0

二:当自平衡二叉查找树不平衡的时候,我们需要通过"旋转"去让它平衡,也就是让节点的左右子树的高度相差小于2.

旋转分为4种情况

1:左左(插入点是在失衡节点的左子树的左子树上,注意:这里是2层左子树如上图所示,这时候要进行失衡节点的顺时针旋转,如下图

这时候这颗二叉树就是一个平衡二叉树)

2:右右(插入点是在失衡节点的右子树的右子树上,注意:这里是2层右子树如上图所示,这时候要进行失衡节点的逆时针旋转,如下图)

3:左右(插入点是在失衡节点的左子树的右子树上,这时候要进行失衡节点的顺时针旋转,也就是例子1的左左旋转,然后再进行例子2的右右旋转)

4:右左(插入点是在失衡节点的右子树的左子树上,这时候要进行失衡节点的顺时针旋转,也就是例子2的右右旋转,然后再进行例子1的左左旋转)

例子3和4 也叫做双旋转,下面给出一个 例子3的 左右双旋转图 ,例子4 只是和例子3相反而已。第一个箭头代表先执行左左旋转,第二个代表右右旋转

超简单理解自平衡二叉查找树的 旋转 是什么?相关推荐

  1. [转]灰度共生矩阵(超简单理解)

    1.灰度共生矩阵生成原理    灰度共生矩阵(GLDM)的统计方法是20世纪70年代初由R.Haralick等人提出的,它是在假定图像中各像素间的空间分布关系包含了图像纹理信息的前提下,提出的具有广泛 ...

  2. 灰度共生矩阵(超简单理解)

    1.灰度共生矩阵生成原理    灰度共生矩阵(GLDM)的统计方法是20世纪70年代初由R.Haralick等人提出的,它是在假定图像中各像素间的空间分布关系包含了图像纹理信息的前提下,提出的具有广泛 ...

  3. P、NP、NP-hard、NPC问题超简单理解

    查了好多资料,现在网上的资料都不说人话,简单的问题故意写得让别人看懂不以显示自己的水平很高深?真正的大师难道不是把复杂问题说得很简单的人?把简单问题说得让别人看不懂显得自己很高深的就是煞笔. 多项式定 ...

  4. 超简单理解L0、L1、L2范数原理及作用

    L0,L1,L2范数在机器学习中的应用个人理解 博文针对L0.L1.L2范数原理及在机器学习中作用进行了非常通俗易懂的解释,为博主了解相关概念后自我理解,相信对于看完本篇分析的读者来说对理解这几个范数 ...

  5. 操作系统基础:进程逻辑思维导图,超简单理解进程管理

    ...

  6. 平衡树初阶——AVL平衡二叉查找树+三大平衡树(Treap + Splay + SBT)模板【超详解】...

    平衡树初阶--AVL平衡二叉查找树 一.什么是二叉树 1. 什么是树. 计算机科学里面的树本质是一个树状图.树首先是一个有向无环图,由根节点指向子结点.但是不严格的说,我们也研究无向树.所谓无向树就是 ...

  7. 泊松分布和指数分布——超简单例子助你理解

    传送门 泊松分布与指数分布的简单理解:http://www.ruanyifeng.com/blog/2015/06/poisson-distribution.html 概率分布函数(所有值的概率的累加 ...

  8. 数据结构与算法之美笔记——基础篇(中):树,二叉树,二叉查找树,平衡二叉查找树,红黑树,递归树,堆

    树: A 节点就是 B 节点的父节点,B 节点是 A 节点的子节点.B.C.D 这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点.我们把没有父节点的节点叫作根节点,也就是图中的节点 E.我们 ...

  9. 红黑树、平衡二叉查找树

    红黑树.平衡二叉查找树 红黑树.平衡二叉查找树 平衡二叉查找树 红黑树 特点 红黑树效率 红黑树和AVL树的比较 红黑树的等价变换 红黑树的操作 旋转操作 左旋 右旋 插入操作 插入操作的所有情况 满 ...

最新文章

  1. 圣才电子书怎么提取pdf_总结10个免费网站,助你解决PDF所有问题!
  2. 为什么 AI 工程师要懂一点架构?
  3. TD-SCDMA向HSPA+的演进
  4. Java发送邮件正文带表格
  5. 这样就可以很方便的知道明天的天气了
  6. 关于最近练习PYTHON代码的一点心得
  7. ACM题目————次小生成树
  8. 百炼1001: Exponentiation 解题
  9. linux stdin shell,关于shell:如何在Alpine Linux中修复“因为stdin不是终端而不会分配伪终端”?...
  10. python 添加数据库表_通过时间表(Python库)简化复杂的计划
  11. Java NIO---1
  12. LG化学和三星SDI宣布关闭美国电池工厂直至4月13日
  13. oracle监听器启动停止,Oracle 10g 监听器启动后停止的解决办法
  14. 匹配率 php,PHP 正则后瞻 超强匹配是否是域名,准确率99%
  15. 数据挖掘:数据清洗——数据不平衡处理
  16. 软件工程毕业设计选题java_软件工程毕业设计选题
  17. 解决DOS窗口中文乱码问题
  18. Helix QAC/QAC++ — 软件静态测试工具
  19. spring注解@Lazy
  20. 电脑启动卡、慢,运行起来后,可能可以慢慢恢复正常问题的原因和解决方案

热门文章

  1. Announcing nohttp
  2. 揭秘中国联通5G应用“网红打卡地” !17个硬核5G案例一览!
  3. 洛谷 P1373 小a和uim之逃离(DP)
  4. 3.Java Web之JavaScript实战
  5. 五月的仓颉 聊聊我成长了什么
  6. android leanback使用详解以及获取焦点高亮
  7. Google Analytics10条有用教程(转)
  8. [C语言] [试题详解] 求1000之内的所有 完数
  9. gradle build时报错:Invalid main APK outputs : EarlySyncBuildOutput
  10. HTML网页上使用falsh播放视频