查找
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. 阅读代码