1.学习总结(2分)

1.1树结构思维导图 使用思维导图将树结构的知识点串在一起。树中的每个知识点需细化到每个操作如何实现。

1.2 树结构学习体会谈谈你对树结构认识,学习这个结构是否遇到哪些困难及树结构可以解决的问题。

1.树的内容很多也很杂,首先是建树,一种是利用队列辅助建树,一种是递归法建树,然后是遍历树,分递归遍历和非递归遍历,其中又分为先中后序遍历,然后是线索树,哈夫曼树的创建和遍历,表达式树的创建和求值,加起来至少有14种代码,是所有章节中最多的。运用树可以解决高效编码的问题,比如哈夫曼树,老师以前也说过阿尔法狗也是用树的结构写的,就是树可以写一些棋牌类游戏,树还可以帮计算机进行计算用树的结构进行查找也是很高效的;

2.PTA实验作业(4分)

2.1 题目1:6-4 jmu-ds-表达式树(25 分)

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

构造表达式树是看老师的模板写的


计算表达式

定义a和b分别表示左子树的值和右子树的值
递归出口是当T为NULL时,返回0;
switch 
当T为+时返回a+b
当T为-时返回a-b
当T为*时返回a*b
当T为/时如果分母为0返回错误,否则返回a/b

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)


2.4 PTA提交列表说明。

  • 1.忘记把'#'压入栈底,导致运算符无法进入栈
  • 2.定义B时没有给B的左右孩子指向导致段错误

2.1 题目2:7-2 根据后序和中序遍历输出先序遍历(25 分)

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

根据后序和中序建树
创建根节点
在中序遍历中找到根节点的位置
递归构造左子树
递归构造右子树
递归出口是子树中的结点个数为0时
先序遍历
访问根节点
递归访问左子树
递归访问右子树

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)


2.4 PTA提交列表说明。


这题主要错误是把数字数组当字符串来写,可能是字符串的写多了,一开始写数字数组的输入代码时脑袋是一片空白的,后面才慢慢回想起来,数字数组一定要事先知道数组长度;

2.1 题目3:7-3 jmu-ds-二叉树层次遍历(25 分)

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

递归法构建树
建根节点,数值为数组中第i个数值
左子树与根节点位置的关系是2*i,递归构建左子树
右子树与根节点位置关系是2*i+1,递归构建右子树
递归出口是i>len-1和str[i]=='#'
返回根节点
层次遍历
初始化队列
将根节点入队
while to 队列为空
访问队首元素
队首元素左孩子不为空就让左孩子进入队列
队首元素右孩子不为空就让右孩子进入队列

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)


2.4 PTA提交列表说明。

  • 1.这题主要是太马虎;

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

3.2 我的得分:1分

4. 阅读代码(必做,1分)

家谱处理




一开始想每个节点用vector记录孩子来着,发现好难弄,后面灵光一闪,想到可以记录父亲啊,每个节点就只有一个父亲呀,这样我们就能递归的处理了。就是说对于当前节点,我们可以先处理完孩子,遇到孩子的孩子,先处理孩子的孩子,处理完继续回来处理。然后就想到了递归,具体的看代码更容易理解一些。
得到父亲就好做多了。然后递归的时候顺便给节点标号就OK了。

5. 代码Git提交记录截图

posted @ 2018-05-05 19:09  哟呵~  阅读(370)  评论(2编辑  收藏  举报