树旋转(Tree rotation)是二叉树中的一种子树调整操作,每一次旋转并不影响对该二叉树进行中序遍历的结果。
树旋转通常应用于需要调整树的局部平衡性的场合。

左旋和右旋

树的旋转有两种基本的操作,即左旋(逆时针方向旋转)和右旋(顺时针方向旋转)。

树旋转包括两个不同的方式,分别是左旋转(以P为转轴)和右旋转(以Q为转轴)。两种旋转呈镜像,而且互为逆操作。

下图示意了两种树旋转过程中, 子树的初态和终态

        +---+                          +---+| Q |                          | P |+---+                          +---+/     \     right rotation     /     \+---+   +---+  ------------->  +---+   +---+| P |   | Z |                  | X |   | Q |+---+   +---+  <-------------  +---+   +---+/     \          left rotation         /     \
+---+   +---+                          +---+   +---+
| X |   | Y |                          | Y |   | Z |
+---+   +---+                          +---+   +---+

其中, 右旋转详细步骤如下图 R0, R1, R2 三个步骤所示, 左旋转则如 L0, L1, L2 三个步骤所示.

                                                                  __/  \+---+                      /  +---+| Q |                     /   | Q |+---+     +---+              +---+ /    +---++---+              | P |    /     \      R1     | P |/    /     \              +---+| Q |     R0       +---+   /     +---+ ----->   +---+    /     +---+   R2      | P |+---+   ----->    /     \ /      | Z |         /        /      | Z | ----->    +---+/     \         +---+   +---+     +---+      +---+    +---+     +---+          /     \+---+   +---+      | X |   | Y |                | X |    | Y |                 +---+   +---+| P |   | Z |      +---+   +---+                +---+    +---+                 | X |   | Q |+---+   +---+              __                                                  +---+   +---+/     \                    /  \                                                        /     \
+---+   +---+     L2       +---+  \                       +---+                L0      +---+   +---+
| X |   | Y |   <-----     | P |   \                      | P |              <-----    | Y |   | Z |
+---+   +---+              +---+    \ +---+      L1       +---+     +---+              +---+   +---+/     \    \| Q |    <-----    /     \    | Q |+---+     \    +---+           +---+     \   +---+| X |      \        \          | X |      \ /     \+---+     +---+    +---+       +---+     +---+   +---+| Y |    | Z |                 | Y |   | Z |+---+    +---+                 +---+   +---+

AVL树的调整

AVL树的基本操作一般涉及运作同在不平衡的二叉查找树所运作的同样的算法。但是要进行预先或随后做一次或多次所谓的"AVL旋转"。

二叉树学习笔记之树的旋转相关推荐

  1. 二叉树学习笔记(未完待续)

    摘要 二叉树学习笔记(未完待续). 博客 IT老兵驿站. 前言 昨天(2019-11-07)复习红黑树,发现红黑树和二叉树密不可分,所以这里再复习一下二叉树. 在大学的时候,这块我很认真地学习了一遍. ...

  2. 《数据结构、算法与应用 —— C++语言描述》学习笔记 — 竞赛树

    <数据结构.算法与应用 -- C++语言描述>学习笔记 - 竞赛树 一.赢者树 二.二叉树的数组描述(补充) 1.声明 2.实现 三.赢者树 1.抽象数据类型 2.赢者树的表示 3.声明 ...

  3. 数据结构学习笔记(树、二叉树)

    树(一对多的数据结构) 树(Tree)是n(n>=0)个结点的有限集.n=0时称为空树.在任意一颗非空树种: (1)有且仅有一个特定的称为根(Root)的结点: (2)当n>1时,其余结点 ...

  4. 学习笔记:树和二叉树的初步学习1

    树是以分支关系定义的层次结构. 一.树的定义 树是n个结点的有限集.在任意一棵非空树中,有且仅有一个特定的被称为根的结点:当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每一 ...

  5. [学习笔记] 伸展树splay详解+全套模板+例题[Luogu P3369 【模板】普通平衡树]

    文章目录 引入概念 全套模板 变量声明 update ==rotate旋转== splay操作 insert插入 delete删除 查找x的位置 查找第k大 前驱/后继 极小值-inf和极大值inf的 ...

  6. 二叉树学习笔记之利用前序遍历递归创建二叉树

    利用前序遍历创建二叉树 树的遍历 前序遍历(preorder traversal) 利用前序遍历创建二叉树 中序遍历访问所有结点 前序遍历访问所有结点 后序遍历访问所有结点 实例 树的遍历 树的遍历是 ...

  7. vrep学习笔记1——平移和旋转

    vrep简单操作 添加模型 在树状图中双击plane图标 物体移动 position是物体的坐标--可以手动输入坐标改变物体的坐标 transition相对移动--从现在的位置想让物体相对移动的距离 ...

  8. 【学习笔记】树的计数,prufer(Prüfer)编码,Cayley公式及相应例题

    目录 1.pruferpruferprufer编码 1)无根树转化为prufer序列 2)prufer序列转化为无根树. 2.Cayley公式 1)由Cayley公式得到四个推论 例题1.P4981 ...

  9. 表达式树 php,Linux_LINQ学习笔记:表达式树,构建查询表达式 本节中, 我们 - phpStudy...

    构建查询表达式 本节中, 我们假设我们拥有一个这样的实体类: 1: [Table] public partial class Product 2: 3: { 4: 5: [Column(IsPrima ...

最新文章

  1. R语言可视化包ggplot2包绘制多个图形并将多个图像垂直堆叠c成一个图像实战(grid.arrange)
  2. JS 提交form表单
  3. css结构和重叠之选择器的特殊性
  4. text/html与text/plain的区别
  5. Image:介绍一些跟图片有关的控件,如图片展示特效,图片生产,图片保护等
  6. 【短文本相似度】传统方法BM25解决短文本相似度问题
  7. 【手撸一个ORM】第八步、查询工具类
  8. idea中java文件红色处理
  9. mysql 表增加多个索引_mysql给同一个表添加多个索引的测试
  10. 机器学习算法之KNN算法
  11. Visual Basic 基础知识
  12. reflections歌词翻译_Reflections中文歌词
  13. 数据库考点之关系代数表达
  14. vos网络电话系统搭建
  15. 得帆创始人张桐:《华为数字化转型之道》系列解读之三
  16. 前端编写bat批处理文件,实现项目启动功能
  17. 2021年“全球乳业20强”榜单发布;全新版希尔顿花园酒店计划2025前在中国开业超200家 | 美通社头条...
  18. 靶机渗透练习90-Grotesque:1.0.1
  19. 计算机专业学校运动会霸气口号,学校运动会口号霸气押韵
  20. php fopen 指定路径,fopen 系统找不到指定路径 PHP文件包含详细讲述

热门文章

  1. 盘点 15 个好用的 API 接口管理神器
  2. 七个开源的 SpringBoot 前后端分离项目,Star过千,快去收藏夹吃灰吧!
  3. Elasticsearch 在各大互联网公司大量真实的应用案例!
  4. 数据挖掘技术在出行体验上的应用!
  5. 结营答辩!28天!Datawhale助力公益AI一起学,点亮最暖寒假!
  6. GNN 系列:Graph 基础知识介绍
  7. 大型AI已有自主意识了?LeCun开喷Open AI首席科学家
  8. 自监督学习新思路!基于蒸馏损失的自监督学习算法 | CVPR 2021
  9. 到了管理层我才发现,这些管理知识应该尽早学起来!
  10. 为什么算法专家都建议学习C++?