1.学习总结(2分)
1.1树结构思维导图
1.2 树结构学习体会
抽象地说,基本上有序列的地方就可以应用树,因为树结构即是一种序列索引结构。
树的操作大量运用到了递归,而我对递归还是不太理解。
树结构可以提高算法的效率,节约时间。
树可以实现表达式的转换,二分查找等
2.PTA实验作业(4分)
2.1 题目1:6-4 jmu-ds-表达式树
2.2 设计思路(伪代码或流程图)
op操作符栈,s树结点栈
while(字符串未遍历完)
{
if(ch==操作数)
生成一个只有根结点的子树T;s.push(T)
if(ch==运算符)
{
if(op栈顶运算符>ch)
{
s栈出栈两个结点t1,t2
T->lchild=t2;
T->rchild=t1; //进行左右子树连接
op.pop()
s.push(T)
}
else if(op栈顶运算符<ch)
op.push(ch)
else if(op栈顶运算符==ch)
op.pop()
}
}
while(op栈不空)
{
s栈出栈两个结点t1,t2
T->lchild=t2;
T->rchild=t1; //进行左右子树连接
op.pop()
s.push(T)
}
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
刚开始树建不起来,然后用后缀做,先转后缀再计算,然后后来参考了一下郑伟的代码,发现我只是i控制错了,就改对了
2.1 题目2:7-1 还原二叉树
2.2 设计思路(伪代码或流程图)
1.在中序序列中找到根结点*pre的位置k,找到后退出循环
2.确定根结点在中序序列的位置
3.递归构造左子树
4.递归构造右子树
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
建树的时候忘记return结点了。
2.1 题目3:7-3 jmu-ds-二叉树层次遍历
2.2 设计思路(伪代码或流程图)
先将根结点进队,
队不空时循环:
pop(p);访问p;
if p有左孩子,左孩子结点进队
if p有右孩子,右孩子结点进队
重复以上操作直至队空
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
空格忘记控制
3.截图本周题目集的PTA最后排名(3分)
本次题目集总分:285分
必做题共:230分
3.1 PTA排名
3.2 我的得分:230
- 阅读代码(必做,1分)
题目:利用树型结构求解集合的幂
他运用到了树的思想却没去建树,方便了许多,有时候运用虚拟树可以节约很多时间
代码来源:[https://blog.csdn.net/arvin_success/article/details/48327035]
- 代码Git提交记录截图