查找

1.学习总结

1.1查找的思维导图

 

1.2 查找学习体会

学习了查找这一章,感觉上课的时候听得懂,课堂派上的互动也大部分会做,但是打代码的时候就觉得没什么思路,不知从何下手。查找的内容很多,计算平均查找度的方法也不同,时间复杂度也不同,但是效率能提高很多。打代码的时间还是太少,需要花时间认真研究。

2.PTA实验作业


 题目1:是否二叉搜索树

1. 设计思路

bool IsBST( BinTree T )
{
    如果T是空树则是二叉搜索树;

    返回真;

    如果不是空,再分情况;

    若左右孩子都为空,则是线索二叉树;

    非空左子树的所有键值小于其根结点的键值;

    非空右子树的所有键值大于其根结点的键值;

    中序遍历该树得到的新节点的值一定要大于前一个值,否则不是;
    返回真;
}   

2. 代码截图

 

3. PTA提交列表说明。

没考虑除根节点外的左右子树是不是二叉树的情况,后来用中序遍历及递归重新考虑整棵树都要是二叉树,实现代码。


题目2:二叉搜索树中的最近公共祖先

1.设计思路

int LCA( Tree T, int u, int v )//寻找公共祖先

{

 如果树为空  返回error;

 如果根节点为u   返回1;跳出;

 如果P->Key >u  就往左子树去找;

 否则,往右子树去找。

如果 flag=0,返回error;

再用一个循环判断u和v是否在一棵子树上,不是返回error,跳出;

返回 P->Key;

 }

2.代码截图

 

 3. PTA提交列表说明。

 

 开始时只考虑了两结点不在树中和重合的情况,未考虑到其他情况,导致部分正确。后来到左右子树中去找时,如果P->Left ==u && P->Right ==v,就跳出。

题目3:QQ帐户的申请与登陆

1.设计思路

输入命令,qq号码和密码;

判断,如果是新账户,if 账户存在,error;else 存入信息;

如果是老用户,输入账户密码,if error ,跳出;else  成功;

2.代码截图

 3. PTA提交列表说明。

本题虽然思路简单,但是自己写的时候编译错误,就参考了百度,要用几个函数来存储和判断新老账户的信息,大部分能够看懂。

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

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

我的总分:120分   

4. 阅读代码

posted @ 2018-05-27 12:45  linzhiyi  阅读(187)  评论(0编辑  收藏  举报