博客园作业-05查找

本文总结了查找算法的学习要点,包括二叉搜索树的验证、最近公共祖先的寻找等,并分享了通过李春葆老师的视频教学进行巩固的经验。同时,记录了在PTA平台上完成的几个查找相关实验作业的过程与心得。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.学习总结(2分)

1.1查找的思维导图
1282691-20180527154934584-1711108001.png

1.2 查找学习体会

学习体会:通过这段时间的学习发现自己的很多不足,无论是在代码量还是预习复习知识方面都有所欠缺。在学习查找的知识的时候我运用了李春葆老师视频教学来实现我的学习巩固,自我认为很有帮助。对于数表查找这方面要多注意平衡二叉树的转换调整方法还有b树的构造,什么时候找父节点什么时候找兄弟节点的拆分合并需要勤加复习。还在哈希表的不成功查找率上的计算要多做些题目,选择正确的除数等等。我的代码能力不高,对自己下阶段的目标是能尽量通过别人的代码来写出用同种思路而写的自己的代码。

2.PTA实验作业(4分)
2.1 题目1:6-2 是否二叉搜索树(25 分)
本题要求实现函数,判断给定二叉树是否二叉搜索树。

2.2 设计思路(伪代码或流程图)

定义变量p表示传入的二叉树T进行运算
if判断是否为空树
if判断是否只有根节点
p->T->Left
while直到p->Right==NULL
end while
if判断是大于根节点

p->T->Right

while直到p->Left==NULL
end while
if判断是小于根节点
return IsBST(T->Left)&&IsBST(T->Right)实现递归禅坐

2.3 代码截图
1282691-20180527160423999-76915195.png

2.4 PTA提交列表说明。

1282691-20180527161605377-935621781.png

PTA提交列表中的每个错误详细说明为什么及如何解决。
一开始参考网上的代码写,后来自己改进了一下通过能让自己更能看懂的方式再修改了一次,中间编译错误是因为键盘切换错了。

2.1 题目2:6-3 二叉搜索树中的最近公共祖先(25 分)
在一棵树T中两个结点u和v的最近公共祖先(LCA),是树中以u和v为其后代的深度最大的那个结点。现给定某二叉搜索树(BST)中任意两个结点,要求你找出它们的最近公共祖先。

2.2 设计思路(伪代码或流程图)
定义树p作传递原函数中的T,temp标志看是否存在最近公共祖先。
while(p!=NULL)
if key==u
{
tmp=1;
break;
}
else{
if(p->Key>u)
p=p->Left;
else(p->Key<u)
p=p->Right;
}
end while
if(tmp==0)
return ERROR
p=T;
tmp=0;
重复上面步骤重新置p找右边
再重新置p找祖先
p=T;
while(p!=NULL)
{
如果u,v都小于关键字,则LCA位于左子树
if(p->Key>u && p->Key>v)
p=p->Left;
大于则位于右子树
else if(p->Key<u && p->Key<v)
p=p->Right;
else找到
break;
}
end while
return p->Key;

2.3 代码截图

1282691-20180527162611415-345981757.png

2.4 PTA提交列表说明。
1282691-20180527162305769-1790899346.png
1282691-20180527162559452-1313292.png

PTA提交列表中的每个错误详细说明为什么及如何解决。
1282691-20180527180117462-1168795584.png

部分正确是因为判断条件的缺失导致没有考虑的全部的情况

2.1 题目3:7-2 航空公司VIP客户查询(25 分)

2.2 设计思路(伪代码或流程图)
参考网上代码

2.3 代码截图
1282691-20180527164620355-641249319.png
1282691-20180527164632539-460186460.png

2.4 PTA提交列表说明。
1282691-20180527164809445-1597800304.png

PTA提交列表中的每个错误详细说明为什么及如何解决。

posted on 2018-05-27 16:28 hirokin 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/hirokin/p/9091975.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值