DS博客作业05--树
1.本周学习总结
1.思维导图
2.谈谈你对树结构的认识及学习体会
对树的学习,明显比栈和队列难多了,树更多的需要运用到递归的思想。树是n个节点组成的有限集合,树是递归的,掌握了树的性质和树的遍历方法,以及三种存储结构。还学习了特殊的树------二叉树,了解了二叉树、满二叉树、以及完全二叉树的定义,掌握了二叉树的性质,学会了对二叉树的基本运算,以及各种遍历,重点是二叉树的存储结构,也学习二叉树的构造方法。最后学习线索二叉树和哈夫曼树。
2.PTA实验作业
2.1.题目1:6-2 中序输出度为1的结点
2.1.1设计思路(伪代码)
2.1.2代码截图
2.1.3本题PTA提交列表说明
注:因为一开始一直在编译器上面写,没有提交过。。然后题目写得慢,然后后来题目集关闭了也没提交。。所以次数较少
- Q1:编译错误
- A1:在电脑上有把之前的错误代码保存下来,后来提交的时候也先把错的代码提交上去,然后在提交正确代码。一开始弄不清楚递归函数,想用while,但是又太麻烦,代码不断编译错误,后来用递归法简单多了,树就是要多递归递归才有感觉。
- Q2:格式错误
- A2:因为递归函数,是先遍历完在输出,一开始没搞清楚,以为是遍历到就输出,知识掌握不好,所以输出时应该先空格,然后%c
2.2 题目2:7-1 还原二叉树
2.2.1设计思路(伪代码)
2.2.2代码截图
2.2.3本题PTA提交列表说明。
- Q1:原本搞不清楚如何通过先序序列和中序序列将二叉树还原
- A1:后来发现,题目是二叉树,且后来发现先序序列第一个值就是根节点,而中序的根节点前面是左子树的中序,后面是右子树的中序,意识到可以用递归解决问题
2.3 题目3:7-4 jmu-ds-二叉树叶子结点带权路径长度和
2.3.1设计思路(伪代码)
2.3.2代码截图
2.3.3本题PTA提交列表说明
- Q1:段错误
- A1:建树函数做的时候,没有将字符串s传入函数中,导致段错误;emmmmm,一开始搞不懂这个题目,后来看了学长的代码,才搞懂的
- Q2:编译错误
- A2:全局变量定义的是s,在后面写错成str,并且在GetWpl函数中 因为是void类型,应该是return,而不是return0;
3、阅读代码
3.1 题目:另一颗树的子树,给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
3.2 解题思路
3.3 代码截图
3.4 学习体会
学会使用递归,判断s和t结构时,从根节点开始判断,注意两者都为NULL的情况。若不相等,取s的左右节点与t根节点取或。