平衡二叉树(AVL树)-详解平衡调整
平衡调整:
(注意:平衡调整只是平衡调整,没有进行结点的插入)
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树)-详解平衡调整相关推荐
- 数据结构与算法——二叉平衡树(AVL树)详解
文章目录 AVL树概念 不平衡概况 四种平衡旋转方式 RR平衡旋转(左单旋转) LL平衡旋转(右单旋转) RL平衡旋转(先右后左双旋转) LR平衡旋转(先左后右单旋转) java代码实现 总结 AVL ...
- 【C++】-- AVL树详解
目录 一.AVL树概念 1.二叉搜索树的缺点 2.AVL树的概念 二.AVL树定义 1.AVL树节点定义 2.AVL树定义 三.AVL树插入 1.插入节点 2.控制平衡 (1)更新平衡因子 (2)旋转 ...
- 机器学习算法(二十五):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 举例: ...
- Trie树详解及其应用
原文:http://blog.csdn.net/hackbuteer1/article/details/7964147 Trie树详解及其应用
- B-、B树详解及模拟实现
B-.B树详解及模拟实现 文章目录 B-.B树详解及模拟实现 一.B-树 二.B树 1.性质 2.特性解释 3.B树的插入操作 4. B树的删除操作 5.B树摸拟实现 一.B-树 B-树就是B树 二. ...
- Android 驱动(12)---Linux DTS(Device Tree Source)设备树详解
Linux DTS(Device Tree Source)设备树详解 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) Linux DTS(Device Tr ...
- 【学习笔记】线段树详解(全)
[学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...
- Jmeter之查看结果树详解
查看结果树详解 文章目录 查看结果树详解 前言 一.官网介绍 二.具体详解 1.左侧的结果列表 2.右侧的"取样器结果" 3.请求"选项卡 4."响应数据&qu ...
- 高通平台msm8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)
本系列导航: 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...
最新文章
- 13装饰器和内置函数
- 微软职位内部推荐-Senior SDE
- 操作系统内存管理_操作系统6内存管理基础
- 【Python-ML】SKlearn库特征抽取-PCA
- 解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾
- 44 万条数据揭秘:如何成为网易云音乐评论区的网红段子手?
- Tcl Tutorial 笔记2 · set ““ {} [] \
- Thinking in Java 9.9 接口与工厂
- iOS UIImageView设置为圆形
- 手机html编辑器微信,135微信(135编辑器手机版网页版)
- linux环境下删除包含特殊字符的文件或目录
- oracle中datedif函数,Datedif函数全面解析和BUG分析
- hhkb mac设置_HHKB 纯小白入坑指南
- 技术报告 | 华为云中国信通院:云原生2.0 白皮书.pdf(附下载链接)
- ChatGPT、文心一言、New Bing到底哪个更AI?
- ECB(实体边界控制)模式
- appium调用了click函数的无反应
- JUnit4 单元测试框架
- 如何搭建符合企业数字化电商解决方案之理解建议
- SQLTRACE的几个用法