当前课程知识点:数据结构(下) > 第七章 二叉搜索树 > (b1)BST:查找 > 07B1-3 查找:理解
我们的查找首先是对根节点
进行一次比较
在有序向量中
这对应于以某个轴点为基准
进行一次比较
这次比较的结果
既可以认为是摒弃掉整棵树的左子树
同时也可以等效地认为是摒弃掉
整个向量的左侧子向量
当然也包括根节点
以及轴点本身
而接下来我们所做的决策
也就是深入到BST的右子树中
这也可以等效地认为
在有序向量中
我们将搜索的范围有效地收缩到
它的右子向量中
以下过程只不过是刚才那一步骤
在不同尺度上的简单重放而已
每一次我们都会摒弃掉
一棵子树或者等效的一个子向量
并且深入到对应的另一侧子树
或者说另一侧子向量
每次对新的根节点的比较
也相当于在向量中
对新的轴点进行比较
如此往复
直到最终收缩为仅含一个元素
其实对于并不存在的关键码
所做的查找
虽然会以失败告终
但整个过程相仿
比如在这棵树中搜索23
我们依然会在16这个位置向右
并且在25这个位置向左
并且在19这个位置向右
直到最终到22这个位置
我们依然试图向右
但是此时已经无路可走
在这样的一个情况下
也就是我们可以判断整个查找
失败的时机
与成功的查找相比
无非增加了最后一次额外的判断而已
本质上没有任何区别
不难看出 在这个算法的背后
也就是我们已经熟知的
减而治之策略
具体来说 这里不过是通过
一次又一次的比较
逐步地缩小整个查找的范围
直至最终抵达平凡的情况
通过刚才我们对中序遍历序列的比照
也可以看出
整个过程也可以等效地视作是在仿效
此前有序向量所行之有效的那种
二分查找的策略
那么这样一个策略以及查找的过程
如何具体地实现为代码呢?
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试