平衡调整:
(注意:平衡调整只是平衡调整,没有进行结点的插入)

LL型调整:
(带阴影的小框表示插入的结点)

代码如下:

AVLNode *AVLTree::LL_Rotate(AVLNode *a)
{AVLNode *b;b = a->lchild;a->lchild = b->rchild;b->rchild = a;a->bf = b->bf = 0;return b;
}

RR型调整:
(带阴影的小框表示插入的结点)

代码如下:

AVLNode *AVLTree::RR_Rotate(AVLNode *a)
{AVLNode *b;b = a->rchild;a->rchild = b->lchild;b->lchild = a;a->bf = b->bf = 0;return b;
}

LR型调整:
(带阴影的小框表示插入的结点)

情况一:
(C为新插入的结点)

情况二:
(F为新插入的结点)

情况三:
(F为新插入的结点)

代码如下:

AVLNode *AVLTree::LR_Rotate(AVLNode *a)
{AVLNode *b, *c;b = a->lchild;c = b->rchild;a->lchild = c->rchild;b->rchild = c->lchild;c->lchild = b;c->rchild = a;if (c->bf == 1)//情况二{a->bf = -1;b->bf = 0;}else if (c->bf == -1)//情况三{a->bf = 0;b->bf = 1;}else//情况一{a->bf = b->bf = 0;}c->bf = 0;return c;
}

RL型调整:
(带阴影的小框表示插入的结点)

情况一:
(C为新插入的结点)

情况二:
(F为新插入的结点)

情况三:
(F为新插入的结点)

代码如下:

AVLNode *AVLTree::RL_Rotate(AVLNode *a)
{AVLNode *b, *c;b = a->rchild;c = b->lchild;a->rchild = c->lchild;b->lchild = c->rchild;c->lchild = a;c->rchild = b;if (c->bf == 1)//情况二{a->bf = 0;b->bf = -1;}else if (c->bf == -1)//情况三{a->bf = 1;b->bf = 0;}else//情况一{a->bf = b->bf = 0;}c->bf = 0;return c;
}

平衡二叉树(AVL树)-详解平衡调整相关推荐

  1. 数据结构与算法——二叉平衡树(AVL树)详解

    文章目录 AVL树概念 不平衡概况 四种平衡旋转方式 RR平衡旋转(左单旋转) LL平衡旋转(右单旋转) RL平衡旋转(先右后左双旋转) LR平衡旋转(先左后右单旋转) java代码实现 总结 AVL ...

  2. 【C++】-- AVL树详解

    目录 一.AVL树概念 1.二叉搜索树的缺点 2.AVL树的概念 二.AVL树定义 1.AVL树节点定义 2.AVL树定义 三.AVL树插入 1.插入节点 2.控制平衡 (1)更新平衡因子 (2)旋转 ...

  3. 机器学习算法(二十五):KD树详解及KD树最近邻算法

    目录 1 KD树 1.1 什么是KD树 1.2 KD树的构建 1.3 KD树的插入 1.4 KD树的删除 1.5 KD树的最近邻搜索算法 1.5.1 举例:查询点(2.1,3.1) 1.5.2 举例: ...

  4. Trie树详解及其应用

    原文:http://blog.csdn.net/hackbuteer1/article/details/7964147 Trie树详解及其应用

  5. B-、B树详解及模拟实现

    B-.B树详解及模拟实现 文章目录 B-.B树详解及模拟实现 一.B-树 二.B树 1.性质 2.特性解释 3.B树的插入操作 4. B树的删除操作 5.B树摸拟实现 一.B-树 B-树就是B树 二. ...

  6. Android 驱动(12)---Linux DTS(Device Tree Source)设备树详解

    Linux DTS(Device Tree Source)设备树详解 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) Linux DTS(Device Tr ...

  7. 【学习笔记】线段树详解(全)

    [学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...

  8. Jmeter之查看结果树详解

    查看结果树详解 文章目录 查看结果树详解 前言 一.官网介绍 二.具体详解 1.左侧的结果列表 2.右侧的"取样器结果" 3.请求"选项卡 4."响应数据&qu ...

  9. 高通平台msm8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

最新文章

  1. 13装饰器和内置函数
  2. 微软职位内部推荐-Senior SDE
  3. 操作系统内存管理_操作系统6内存管理基础
  4. 【Python-ML】SKlearn库特征抽取-PCA
  5. 解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾
  6. 44 万条数据揭秘:如何成为网易云音乐评论区的网红段子手?
  7. Tcl Tutorial 笔记2 · set ““ {} [] \
  8. Thinking in Java 9.9 接口与工厂
  9. iOS UIImageView设置为圆形
  10. 手机html编辑器微信,135微信(135编辑器手机版网页版)
  11. linux环境下删除包含特殊字符的文件或目录
  12. oracle中datedif函数,Datedif函数全面解析和BUG分析
  13. hhkb mac设置_HHKB 纯小白入坑指南
  14. 技术报告 | 华为云中国信通院:云原生2.0 白皮书.pdf(附下载链接)
  15. ChatGPT、文心一言、New Bing到底哪个更AI?
  16. ECB(实体边界控制)模式
  17. appium调用了click函数的无反应
  18. JUnit4 单元测试框架
  19. 如何搭建符合企业数字化电商解决方案之理解建议
  20. SQLTRACE的几个用法

热门文章

  1. C语言,C#语言求100-999内的水仙花数源程序
  2. 【VB测绘程序设计】第一章 VB测绘程序设计概述
  3. VS2008打包(含水晶报表)与安装注意事项
  4. Android之adb shell dumpsys activity获取task里面的所有actitiy
  5. cms的 php代码,KingCMS/PHP可执行代码
  6. 史上最被低估的两个学科!它们远比你想的更重要!
  7. 为什么现在老师这么难,值得大家深思
  8. 修车工在生命最后,才知道自己的儿子是如今世界首富!
  9. 程序员的项目周期(表情包版)
  10. sklearn集合算法预测泰坦尼克号幸存者