当前课程知识点:数据结构(下) > 第七章 二叉搜索树 > (d3)AVL树:删除 > 07D3-2 删除:双旋
我们只需考虑其中的一种
也就是所谓的zag-zig的情况
另一种zig-zag的情况完全对称
在这种情况下 v是p的右孩子
而p是g的左孩子
此时 我们依然只可能
至多有一个失衡节点
不难理解 如果g果然是这个失衡的节点
那么此前我们删除的
必然是T3这棵树的某一底层节点
而且因为这个底层节点的删除
导致T3整体的高度收缩一层
从而使得节点g的平衡因子
由此前的+1变为超标的+2
在这种情况下
我们要先后做两次旋转调整
具体来说 首先需要围绕着节点p
做一次逆时针的zag旋转
同样地 我们假定同学们
已经对这种基本的旋转非常熟悉了
所以在这里直接给出旋转之后的结果
我们可以看到
它等效于将此前的zag-zig
转换为了现在的zig-zig
恰好就是我们刚刚介绍过的单旋操作
没错 接下来
我们只需要围绕着节点g做一次zig
就可以使得这棵子树重新恢复平衡
尽管如此 我们还是特别提醒你留意
这棵局部子树在调整前后的高度变化
我们知道 在T1和T2这两棵子树的底层
至少有一个节点存在
这就意味着 在旋转调整之前
这棵局部子树的高度
应该是由这条水平基准线来确定的
而在调整完成之后
这棵局部子树的高度
将由这条基准线来确定
两相比较 高度收缩了一层
这意味着什么呢?
没错 这意味着
在这棵局部子树以上的每一个祖先
此时都存在由原先的平衡转为失衡的可能
也就是说 同样会发生失衡的向上传播
当然 果真如此
我们可以依然套用这里所给的算法
好在失衡传播的方向是单调的 一直朝上
所以同样地
充其量至多经过Logn次这样的传播
迟早会抵达某个不再失衡的节点
或者抵达树根
当然你可以同样参照我们的习题解析
构造出这样极端的反例
至此节点删除可能的几种情况
我们都已论及
那么这些处理算法
又当如何落实为具体的代码呢?
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试