DS博客作业07—查找
1.本周学习总结
1.1思维导图
1.2学习体会
本章学习了顺序表、树表、哈希表的查找方式,学会计算各种查找方式下的ASL
树表部分的b树和平衡二叉树较为复杂,哈希表相对容易掌握
期末要复习的有点多,最近代码打得太少,进度有点跟不上
2.PTA实验作业
2.1
是否二叉搜索树
2.1.1 设计思路
bool IsBST
这只是个壳
bool isBSTReal //真·isBST
if bt==NULL //该分支是二叉搜索树
return true
if 元素值超出min-max范围
return false
递归执行isBSTReal(左子树,min,bt->Data-1)和isBSTReal(右子树,bt->Data+1,max)
2.1.2 代码截图
2.1.3 本题PTA提交列表说明
递归代码left,right写反,导致正确的测试点不能过
一波递归写完发现给定函数没法递归,然后懒得不想重写,套了个壳交上去发现竟然有分
打了快一年PTA才发现函数题可以这么玩
2.2
航空公司VIP客户查询
2.2.1 设计思路
定义map类 airline
for i=0 to n
输入用户,航程
航程不满最小值替换为最小值
用户,航程存入map类
for i=0 to n
输入用户
if 找到
输出航程
else
输出No Info
2.2.2 代码截图
2.2.3 本题PTA提交列表说明
超时,超时,超时·······
对比了其它人的代码发现同样的思路使用scanf,printf可以压着时间过,查了一下资料
可以用ios::sync_with_stdio(false);取消cin cout 与 stdio 同步
强烈质疑测评机制有问题:原封不动的代码打个注释又超时了
2.3
二叉搜索树中的最近公共祖先
2.3.1 设计思路
int LCA
调用Find判断两数是否都在树中
否,return ERROR
if 空树
return ERROR
while 树不空
if 两数都小于元素值
树指针指向左子树
if 两数都大于元素值
树指针指向右子树
else
返回指针指向的节点
int Find
if 空树
return 0
if 找到对应元素
return 1
if 元素值大于查找值
递归在左子树中查找
else
递归在右子树中查找
2.3.2 代码截图
2.3.3 本题PTA提交列表说明
Q1.return ERROR直接用return -1
Q2.给定数字不在树中时错误
A2.加入Find函数判断给定数字是否在树中
3.阅读代码
3.1 题目
查找和最小的K对数字
3.2 解题思路
for i=0 to nums1.size()
for j=0 to nums2.size()
生成所有可能的数字对,两数字和为键,两数字为值,存入multmap
for 使用迭代器遍历multmap
将前k个的值存入数组res中
返回数组res
3.3 代码截图
3.4 学习体会
学习了pair的用法,multmap的部分用法,为课设做准备