DS博客作业07——查找
1.本周学习总结
1.1思维导图

1.2.谈谈你对查找运算的认识及学习体会。
查找的内容和前两章树和图相比,要简单许多,在二次搜索树虽然也要用到树,但是也是很简单的树的操作,再加上查找的代码可以使用map这种STL++容器,使得代码简单而且容易理解。
查找的方法有很多,上学期就基本学过的顺序表的查找(数组嘛),二分法查找,还有二叉搜索树,哈希查找,每种查找方法都有自己的利与弊,有的效率高有的操作简单,使用时要灵活。
map容器的常用操作
map<Key, value> m
map<Key, value> m; 构造一个空的map,
empty() // 如果map 为空,返回true。否则返回 false
ize() // 返回map 中元素的大小,即 key-value 的个数
操作符[] // m[k] 返回map 中 Key为 k的元素的value的引用。
// 如果 k不存在,那么将会插入一个 key为 k的元素,并返回其默认 value。
// []操作总会将 map的大小 +1
find 查找
在map中查找key 为 k的元素,返回指向它的迭代器。若k不存在,返回 map::end.
count 计数
统计map中 key为k的元素的个数,对于map,返回值不是1(存在),就是0(不存在)
2.PTA实验作业
2.1.是否二叉搜索树

2.1.1设计思路
定义全局数组a
中序遍历二叉树
{
if T存在
递归遍历左孩子
得到的数据放入数组a
递归遍历右孩子
}
判断数组a是否升序
{
for j=1 to i
if a[j-1]>a[j]//有一对数据不是升序
return false ;
end if
return true;//全部没问题返回true;
}
2.2.2代码截图

2.2.3本题PTA提交列表说明

利用搜索二叉树的特性,即中序遍历得到的顺序为升序,即可快速解答此题。
2.2.二叉搜索树中的最近公共祖先

2.2.1设计思路
Find(Tree T ,int u)
{
if(!T)
return 0;//找不到
end if
如果Key大于要找的数,去左孩子
如果Key小于要找的数,去右孩子
等于的话返回1
}
LCA(Tree T,int u,int v)
{
if(!T) return REEOR//找不到
end if
Key的大小在v和u之间,那T就是公共祖先 return T->Key
Key等于u和v中的一个,那T也是祖先 return T->Key
如果Key比u和v小,去右孩子找祖先
如果Key比u和v大,去左孩子找祖先
前面的判断中不能跳出,则找不到 return ERROR
}
2.2.2代码截图

2.2.3本题PTA提交列表说明

2.3QQ帐户的申请与登陆

2.3.1设计思路
本题主要是练习map容器的使用
头文件 #include
默认定义方式 map m;
key为搜索的关键字 ,value为对应的值(主要数据类型)
map<string,int> account;//账号
map<string,string> code;//密码
输入x,y,z //y 账号 z 密码
如果 xL //老用户登录
if account[y]0 //账号不存在
输出ERROR: Not Exist4
else if code[y]!=z//账号存在但密码不对
输出ERROR: Wrong PW
end if
if account[y]1&&code[y]=z//账号存在且密码正确
输出Login: OK
end if
如果 xN//新用户注册
if account[y]1//账号已被注册
输出ERROR: Exist
end if
if account[y]0//账号没有被注册
account[y]=1;
code[y]=z;
输出New: OK
end if
2.3.2代码截图


2.3.3本题PTA提交列表说明

阅读代码

解题思路
* 先比较第一和第二个,如果有公共的前缀,则用前缀和第三个比较
* 如果没有公共前缀,就直接返回,后面的不需要比较
代码截图

题目是在力扣上找的,网站上提供了好多解题思路。我觉得这是最好最清楚的,从头开始逐个遍历,时间复杂杜并不是很高,但思路很清晰,用代码写出来也很简单。
DS博客作业07——查找的更多相关文章
- DS博客作业--07查找
目录 DS博客作业--07查找 1.本周学习总结(0--2分) 1.思维导图 2.谈谈你对查找运算的认识及学习体会. 2.PTA实验作业(6分) 2.1.题目1:6-1 二叉搜索树的操作集 (30 分 ...
- DS博客作业07—查找
1.本周学习总结 1.1思维导图 1.2学习体会 本章学习了顺序表.树表.哈希表的查找方式,学会计算各种查找方式下的ASL 树表部分的b树和平衡二叉树较为复杂,哈希表相对容易掌握 期末要复习的有点多, ...
- DS博客作业——树
DS博客作业--树 1.本周学习总结 1.思维导图 2.谈谈你对树结构的认识及学习体会. 在树这一章节,我们学习的是二叉树的算法. 树的构建:一种是直接给树的顺序存储结构的字符串,一种是通过先序遍历和 ...
- DS博客作业05--查找
这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业05--查找 这个作业的目标 学习查找的相关结构 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1.1 ...
- DS博客作业04--图
这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业04--图 这个作业的目标 学习图结构设计及相关算法 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1. ...
- DS博客作业03--树
这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业03--树 这个作业的目标 学习树结构设计及运算操作 姓名 黄静 目录 0. PTA得分截图 1. 本周学习总结 ...
- DS博客作业08--课程总结
DS博客作业08--课程总结 1.当初你是如何做出选择计算机专业的决定的? 1.1 经过一年学习,你的看法改变了么,为什么? 1.2 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 1. ...
- DS博客作业--课程总结
1.当初你是如何做出选择计算机专业的决定的? 经过一年学习,你的看法改变了么,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 刚开始填报志愿的时候,因为我个人是没有什么比较特别 ...
- DS博客作业01--线性表
1.本周学习总结(0--2分) 1.1思维导图 1.2.谈谈你对线性表的认识及学习体会. 1.线性表的内容上了三星期的课,相对来说内容比较丰富,尤其是链表方面,包含单链表,双链表和循环链表.作为第一部 ...
随机推荐
- [NOIP10.5模拟赛]3.c题解--思维
题目链接 这次不咕了 https://www.luogu.org/problemnew/show/AT2389 闲扯 考场20分爆搜走人 \cy 话说这几天T3都很考验思维啊 分析 我们先钦定一只鸡( ...
- XML模块与类的定义
xml模块 xml介绍: --XML 全称 可扩展标记语言 --<tag></tag> 双标签 标签中间可以加入文本信息 --<tag/>单标签 没有文本 ...
- CentOS开机启动进度条卡死问题
centos为例 一, 如下: 如果这个地方卡住了的话也许是你上次改了passwd文件,这个是其中一个情况. 如果刚刚开机就卡住了或者怎么卡住了的话在开机的读条时候摁esc显示读取的进程,根据显示的错 ...
- asp.net网站部署在云服务器windows server 2008上
搭建一个网站需要以下4个准备: 1.域名解析 2.(云)服务器 3.数据库 4.网站代码 其中1可以可以去DNSPOD申请,同时需要进行备案,在上面就都可以完成.2用的是阿里云服务器windows s ...
- python多继承下的查找顺序-MRO原则演变与C3算法
在python历史版本中的演变史 python2.2之前: MRO原则: 只有经典类,遵循深度优先(从左到右)原则, 存在的问题:在有重叠的多继承中,违背重写可用原则 解决办法是再设计类的时候不要设计 ...
- Airflow安装错误:sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError)
1 完整的异常信息: raise errorclass, errorvalue sqlalchemy.exc.OperationalError: (_mysql_exceptions.Operatio ...
- 2.03_Python网络爬虫Http和Https
一:HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法,以明文的形式传输,效率高,但是不安全 HTTPS ...
- ftp服务器终端登录后乱码处理方法
首先在windows上用资源管理器登录看看会不会乱码,如果不会,说明是GBK编码 因为windows默认是GBK(936),linux默认(UTF-8) 因为FTP服务器我们修改不了,如果用linux ...
- 原生js中如果有多个onload事件解决方案
在一个页面中有两个JavaScript 分别都用到了window.onload 一个是:window.onload=func1,另一个是:window.onload=func2 这样就造成了一个Jav ...
- Linux的基础使用命令
ifconfig #查看ip地址 或者使用 ip a pwd #查看当前工作路径 man pwd #查看命令的详细信息 按q退出 mkdir /data 创建data目录 ...