当前课程知识点:数据结构(下) > 第七章 二叉搜索树 > (b3)BST:删除 > 07B3-2 删除:单分支
我们先来考虑第一种情况
这也是相对而言更为简单的一种情况
它的特征是我们经过查找
所确定的那个目标节点x
至多只有一个孩子
或者反过来 它至少有某棵子树是空的
比如在这样一棵BST中
如果我们试图删除其中的69
那么经过逐层地不断深入
我们最终的确可以定位到69
而且我们会发现69
至多只有一个孩子
此时我们只需将这个节点
大胆地删除掉
并且取而代之以它那个非空的孩子
在这里 也就是64
不难验证 经过这样的处理之后
整棵BST依然是一棵名副其实的BST
因此接下来 我们不妨将
这种情况下的处理方法
整理并且实现为具体的代码
比如这就是一种可能的实现方式
在这个名为removeAt的算法中
我们要删除的对象是以x指示的那个节点
请注意 在此前经过搜索所确定的hot
也会作为参数传入
接下来我们需要进行判断
如果x的左孩子并不存在
那么 我们只需直接用它的右孩子
来代替它
对称地 如果当前节点没有右孩子
我们也可以直接用它的左孩子
来顶替它的位置
这也就是我们刚才所说的
第一种情况
需要特别指出的是
其实这两种情况还涵盖了一个
非常特殊的情况
也就是左右孩子可能同时为空
针对这种特殊的情况
在课后你不妨重新体会这段代码
并且验证它依然是能够正确处理
经过这样的替换操作之后
新近提升一层的节点
还需要与它此前的祖父完成直接的连接
这也是以下这两句所完成的任务
至此 情况一的处理已经完全结束
当然接下来
比较棘手的是互补的那种情况
也就是尽管删除的目标存在
但是它的左右孩子同时存在
情况一的策略在这种情况下
无法直接套用
那么面对这种情况
我们又当如何处置呢?
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试