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错

相关推荐
hold?fish:palm1 小时前
24 回文链表
数据结构·c++·链表
qeen875 小时前
【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
数据结构·c++·算法
冻柠檬飞冰走茶6 小时前
PTA基础编程题目集 7-35有理数均值(C++语言实现)
开发语言·数据结构·c++·算法·均值算法
Nil2087 小时前
leetcode 189轮转数组
数据结构·算法·leetcode
依然鸣8 小时前
PTA团体程序设计天梯赛L1真题讲解L1-085-088
数据结构·c++·经验分享·算法·深度优先·pat考试
Brilliantwxx9 小时前
【算法从零到千】【51-54】逆序对(分治+递归算法)
数据结构·算法·排序算法
小星星闪亮登场9 小时前
2026河南萌新联赛第四场--南阳理工学院
数据结构·算法·贪心算法·动态规划·哈希算法·广度优先
土司大王9 小时前
LeetCode hot100——两数之和
数据结构·算法·leetcode
wabs66610 小时前
关于字符串【力扣344.反转字符串的思考】
数据结构·算法·leetcode
LuminousCPP10 小时前
数据结构基础篇(二):顺序表与链表全方位对比|从内存布局到 CPU 缓存理解底层差异
c语言·数据结构·经验分享·链表·缓存