当前课程知识点:数据结构(下) > 第七章 二叉搜索树 > (d2)AVL树:插入 > 07D2-2 插入:双旋
比如这就是祖孙三代
呈现一种之字形形式的可能
具体来说
节点p是节点g的右孩子
而节点v却是节点p的左孩子
这样一种情况也称作zig-zag
当然还有对称的zag-zig
其方法和过程完全对称
我们这里不妨依然以zig-zag为例
那么 请注意 这里我们所谓的g
依然是所有失衡祖先中
最低的那个
而且节点g的高度
也不致于太低
它至少是新插入节点x的祖父
当然 x本身有可能就是v
在这种情况下 我们要进行一轮
共两次的等价变换
我们也称这种组合为双旋
我们不妨通过下面这个动画来看一下
这种情况下双旋的执行过程
首先 我们要围绕着节点p
做一次顺时针的zig旋转
整个过程与刚才相仿
我们重新来温习一遍
好
至此zig旋转即告完成
那么接下来
我们还需要围绕着节点g
做一次逆时针的zag旋转
就单独这次旋转来说
与我们刚才的过程完全一样
我们不妨通过动画来重温一遍
至此 这步zag旋转也告完成
这样我们实际上已经完成了
这一局部的重平衡化
为了能够更清楚地看到这一点
我们不妨同样地
对这一结果稍事整理
现在你应该看得很清楚了
在此局部的这棵子树
的确已经恢复了平衡
那么同样地 g以上
有可能此前也是失衡的那些祖先呢
我们说它们依然会一揽子地
统一恢复平衡
其背后的原因
与刚才单旋的情况如出一辙
我们把这一点的验证
留给同学们在课后完成
最后 正如我们刚才已经指出的
这两种情况
以及它的对称情况
完全覆盖了
插入操作失衡调整的所有情况
因此就算法而言
我们已经做了足够的分析和交代
那么这样一组调整的算法
如何具体的兑现为代码呢?
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)概述
--07A-1 纵览
--07A-5 接口
-(a)概述--作业
-(b1)BST:查找
-第七章 二叉搜索树--(b1)BST:查找
-(b2)BST:插入
-(b2)BST:插入--作业
-(b3)BST:删除
-第七章 二叉搜索树--(b3)BST:删除
-(c)平衡与等价
-(c)平衡与等价--作业
-(d1)AVL树:重平衡
-第七章 二叉搜索树--(d1)AVL树:重平衡
-(d2)AVL树:插入
-(d2)AVL树:插入--作业
-(d3)AVL树:删除
-(d3)AVL树:删除--作业
-(d4)AVL树:(3+4)-重构
-(d4)AVL树:(3+4)-重构--作业
-本章测验
--章节测验
-(a1)伸展树:逐层伸展
--习题
-(a2)伸展树:双层伸展
--习题
-(a3)伸展树:算法实现
--习题
-(b1)B-树:动机
--习题
-(b2)B-树:结构
--习题
-(b3)B-树:查找
--习题
-(b4)B-树: 插入
--习题
-(b5)B-树: 删除
--习题
-(xa1)红黑树:动机
--习题
-(xa2)红黑树:结构
--习题
-(xa3)红黑树:插入
--习题
-(xa4)红黑树:删除
-本章测验
--习题
-(b)散列:原理
--09B-3 数组
--09B-4 原理
--09B-5 散列
--09B-6 冲突
--习题
-(c)散列:散列函数
--习题
-(d1)散列:排解冲突(1)
--习题
-(d2)散列:排解冲突(2)
--习题
-(e)桶/计数排序
--习题
-本章测验
--本章测试
-(a1)需求与动机
--习题
-(a2)基本实现
--习题
-(b1)完全二叉堆:结构
--习题
-(b2)完全二叉堆:插入与上滤
--习题
-(b3)完全二叉堆:删除与下滤
--习题
-(b4)完全二叉堆:批量建堆
--习题
-(c)堆排序
--习题
-(xa1)左式堆:结构
--习题
-(xa2)左式堆:合并
--习题
-(xa3)左式堆:插入与删除
-本章测验
--本章测试
-(a)ADT
--习题
-(b1)串匹配
--习题
-(b2)蛮力匹配
--习题
-(c1)KMP算法:从记忆力到预知力
--习题
-(c2)KMP算法:查询表
--习题
-(c3)KMP算法:理解next[]表
--习题
-(c4)KMP算法:构造next[]表
--习题
-(c5)KMP算法:分摊分析
--习题
-(c6)KMP算法:再改进
-(d1)BM_BC算法:以终为始
-(d2)BM_BC算法:坏字符
-(d3)BM_BC算法:构造bc[]
-(d4)BM_BC算法:性能分析
-(e1)BM_GS算法:好后缀
-(e2)BM_GS算法:构造gs表
-(e3)BM_GS算法:综合性能
-(f1)Karp-Rabin算法:串即是数
-(f2)Karp-Rabin算法:散列
-本章测验
--本章测试
-(a1)快速排序:算法A
-- 12a1-5: 实例
--习题
-(a2)快速排序:性能分析
--习题
-(a4)快速排序:变种
-(b1)选取:众数
-(b3)选取:通用算法
--习题
-(c1) 希尔排序:Shell序列
--习题
-(c2)希尔排序:逆序对
-本章测验
--本章测试