408第一季 - 数据结构 - 折半查找与二叉排序树
折半查找
名词解释
一般线性表的顺序查找
比如6 1 5 9 8 4 7
查9是4次
查10是7次
有序线性表的顺序查找
比如1 4 5 6 7 8 9
查找9 7次
查3只要 2次了,优化了
折半查找
折半查找又称二分查找,使用于有序的顺序表
这里分别对32和11比较,并且向下取整
判定树
然后是判定树,它是平衡二叉树
高度向上取整
通过下面的图可以发现,查找失败了最少的3次,最多是4次
但有时候查找失败的最多和最少是一样的,比如
如何出现这样的情况
可以看见,只要正好取整,那它就是满二叉树,就会出现我刚才说的那种情况
做题
1
b
2
没说的话默认查找成功
3
如果你选择靠右(向上取整)的,那后面所有的都应该靠右(向上取整)
d选项选项画个图就懂了
平均查找长度
做题
1
分块查找
名词解释
过程
这里分为了4个块,然后下面是对应的下表,然后可以发现块间是有序的24,54,78,88
然后查找的话,比如找61,通过块间比较在54-78内,然后到里面一个一个顺序的找,72,61!找到了
二叉排序树(BST)
也叫二叉搜索树 binary search tree
定义
记住是要整个结点要小于根或者大于根
比如这里就是7大于6,就不是二叉排序树了
然后他的中序遍历是递增的!
二叉排序树的删除
第一条 : 叶子节点直接删
第二条只有右或者左子树
图a和图b这里:往上摞一摞就行了
第三种情况,左子树和右子树都有的情况
图c这里,可以把左子树的最大值螺上来,也可以把右子树的最小值螺上来
这里既可以螺65也可以螺81
直接后继就是右子树的最小值,直接前驱是左子树的最大值
做题
1
可以写中序遍历来比较
x1 x3 x5 x4 x2
c
2
要一个一个放,左边图是B选项,是错的
3
这里选A
先按左小右大画成一条线,然后一个一个看
95左边都比95小
22右边都比22大
91左边应该都比91小,但有个94惹事了
所以A错