查找

 

 

 

 

1.学习总结

1.1查找的思维导图

1.2 查找学习体会

在查找这一章的学习当中,理解了查找的基本概念,了解了静态查找,动态查找,内查找和外查找。

学习了线性表上的各种查找算法,理解了顺序查找,折半查找和分块查找的基本思路。

学习了各种数表的查找算法,包括二叉排序树,AVL树,B-树和B+树的基本思路和实现的方法。

了解了哈希表的查找思路,并不是所有的算法都是完美的,例如哈希表有哈希冲突的现象存在,在学习了哈希冲突的解决方法之后意识到算法不一定要一次性准确,我们要考虑到查找效率,查找过程等等进行完善。

2.PTA实验作业

2.1 题目1:6-2 是否二叉搜索树

2.2 设计思路

使用中序遍历的方法:

1.对树进行中序遍历。

2.使用全局变量x保存前一个结点的,如果当前节点小于前一个节点的值,则该树不是二叉排序树。

tips:若为BST,使用中序遍历,其遍历结果为升序。

2.3 代码截图

2.4 PTA提交列表说明。

 刚开始的思路是找出左右子树中最小和最大的节点,

与根节点相比,若不符合则返回false,若符合则进行递归操作。

在构造子函数寻找左右子树中最小和最大的节点时,

使用BST中的操作集去实现,部分正确。

忽略了根节点的左右子树也不一定为BST,所以不能使用BST的操作集去实现。

接着自己编写了两字子函数去实现寻找最小和最大节点,

还是部分正确。

去请教了同学之后,使用中序遍历的思路实现了全部正确。

2.1 题目1:6-3 二叉搜索树中的最近公共祖先

2.2 设计思路

使用了递归的思想:

1.若为空树返回ERROR,否则进行下一步

2.判断输入的u,v是否在二叉排序树中,是进行下一步,否则返回ERROR

3.若u,v都在当前根节点的左子树,则递归当前节点的左孩子

4.若u,v都在当前根节点的右子树,则递归当前节点的右孩子

5.若u,v分别在左右子树,返回当前节点的值

2.3 代码截图

2.4 PTA提交列表说明。

 

刚开始只是简单的想到递归如何进行,

忽略了u,v是否存在于二叉排序树。

而后完成子函数FIND去检测输入的u,v是否有效,

接着再进行递归操作,最终实现了题目要求。

2.1 题目1:7-1 QQ帐户的申请与登陆

2.2 设计思路

使用map完成算法要求。

1.若输入L,使用map查找此帐号是否已经存在且密码是否正确。

2.否则进行新建帐号,储存输入的账号与密码。

2.3 代码截图

2.4 PTA提交列表说明。

在老师提供了使用map的思路下,还是无法写出正确的代码。

在百度上搜索到了此种方法,在弄懂之后,上传到了PTA上。

 

3.截图本周题目集的PTA最后排名

本次题目集总分:175分
必做题共:145分

3.1 PTA排名

3.2 我的总分:120分

4. 阅读代码

 

posted @ 2018-05-27 15:19  Doriso  阅读(190)  评论(0编辑  收藏  举报