1.学习总结(2分)
1.1查找的思维导图
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 代码截图
2.4 PTA提交列表说明。
PTA提交列表中的每个错误详细说明为什么及如何解决。
一开始参考网上的代码写,后来自己改进了一下通过能让自己更能看懂的方式再修改了一次,中间编译错误是因为键盘切换错了。
2.1 题目2:6-3 二叉搜索树中的最近公共祖先(25 分)
在一棵树T中两个结点u和v的最近公共祖先(LCA),是树中以u和v为其后代的深度最大的那个结点。现给定某二叉搜索树(BST)中任意两个结点,要求你找出它们的最近公共祖先。
2.2 设计思路(伪代码或流程图)
定义树p作传递原函数中的T,temp标志看是否存在最近公共祖先。
while(p!=NULL)
if keyu
{
tmp=1;
break;
}
else{
if(p->Key>u)
p=p->Left;
else(p->Key<u)
p=p->Right;
}
end while
if(tmp0)
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 代码截图
2.4 PTA提交列表说明。
PTA提交列表中的每个错误详细说明为什么及如何解决。
部分正确是因为判断条件的缺失导致没有考虑的全部的情况
2.1 题目3:7-2 航空公司VIP客户查询(25 分)
2.2 设计思路(伪代码或流程图)
参考网上代码
2.3 代码截图
2.4 PTA提交列表说明。
PTA提交列表中的每个错误详细说明为什么及如何解决。