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——查找的更多相关文章

  1. DS博客作业--07查找

    目录 DS博客作业--07查找 1.本周学习总结(0--2分) 1.思维导图 2.谈谈你对查找运算的认识及学习体会. 2.PTA实验作业(6分) 2.1.题目1:6-1 二叉搜索树的操作集 (30 分 ...

  2. DS博客作业07—查找

    1.本周学习总结 1.1思维导图 1.2学习体会 本章学习了顺序表.树表.哈希表的查找方式,学会计算各种查找方式下的ASL 树表部分的b树和平衡二叉树较为复杂,哈希表相对容易掌握 期末要复习的有点多, ...

  3. DS博客作业——树

    DS博客作业--树 1.本周学习总结 1.思维导图 2.谈谈你对树结构的认识及学习体会. 在树这一章节,我们学习的是二叉树的算法. 树的构建:一种是直接给树的顺序存储结构的字符串,一种是通过先序遍历和 ...

  4. DS博客作业05--查找

    这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业05--查找 这个作业的目标 学习查找的相关结构 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1.1 ...

  5. DS博客作业04--图

    这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业04--图 这个作业的目标 学习图结构设计及相关算法 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1. ...

  6. DS博客作业03--树

    这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业03--树 这个作业的目标 学习树结构设计及运算操作 姓名 黄静 目录 0. PTA得分截图 1. 本周学习总结 ...

  7. DS博客作业08--课程总结

    DS博客作业08--课程总结 1.当初你是如何做出选择计算机专业的决定的? 1.1 经过一年学习,你的看法改变了么,为什么? 1.2 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 1. ...

  8. DS博客作业--课程总结

    1.当初你是如何做出选择计算机专业的决定的? 经过一年学习,你的看法改变了么,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 刚开始填报志愿的时候,因为我个人是没有什么比较特别 ...

  9. DS博客作业01--线性表

    1.本周学习总结(0--2分) 1.1思维导图 1.2.谈谈你对线性表的认识及学习体会. 1.线性表的内容上了三星期的课,相对来说内容比较丰富,尤其是链表方面,包含单链表,双链表和循环链表.作为第一部 ...

随机推荐

  1. C#之Action和Func

    以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...

  2. arcgis js之点击获取featureLayer中的点

    arcgis js之点击获取featureLayer中的点 代码: this.view.on('click', (evt) => { let layer = this.map.findLayer ...

  3. Windows 下 nvm, node, npm 的下载、安装与配置

    主要解决的问题 下载安装完 nvm 和 node 后,缺失 npm 文件 执行 jasmine 等命令时提示「不是内部或外部命令...」及全局变量的设置 下载与安装 一.nvm github 下载地址 ...

  4. C++ STL 之 set 和 pair

    set/multiset 的特性是所有元素会根据元素的值自动进行排序.set 是以 RB-tree(红黑树,平衡二叉树的一种)为底层机制,其查找效率非常好.set 容器中不允许重复元 素,multis ...

  5. 多进程编程——理论讲解与 multiprocessing 模块

    多进程编程 import os pid = os .fork() 功能 :创建新的进程 参数: 无 返回值 :失败返回一个负数 成功:在原有进程中返回新的进程的PID号 在新进程中返回为0* 子进程会 ...

  6. 【Git】六、分支管理&冲突解决

    上一节讲了如何和远端的仓库协同工作,这一节介绍一下分支 ---------------------------- 提要 //创建一个分支dev $ git branch dev //切换到dev分支 ...

  7. 《浏览器工作原理与实践》<06>渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?

    在上篇文章中,我们介绍了渲染流水线中的 DOM 生成.样式计算和布局三个阶段,那今天我们接着讲解渲染流水线后面的阶段. 这里还是先简单回顾下上节前三个阶段的主要内容:在 HTML 页面内容被提交给渲染 ...

  8. 阿里云MySQL用Navicat连接问题

    阿里云上装好MySQL用Navicat连接出现密码正确,Navicat连接测试失败.解决方案:网上众多方案,比如:放行3306端口啥子的,加入安全组啥子的.确认这些都没问题,还是出现密码正确,测试连接 ...

  9. 遍历二叉树 - 基于栈的DFS

    之前已经学过二叉树的DFS的遍历算法[http://www.cnblogs.com/webor2006/p/7244499.html],当时是基于递归来实现的,这次利用栈不用递归也来实现DFS的遍历, ...

  10. async 与 await

    async 关键字 1.含义:表示函数是一个异步函数,意味着该函数的执行不会阻塞后面代码的执行 2.定义与调用 async function hello (flag) { if (flag) { re ...