第四次作业 树
1.学习总结
1.1树结构思维导图
使用思维导图将树结构的知识点串在一起。树中的每个知识点需细化到每个操作如何实现。
1.2 树结构学习体会
谈谈你对树结构认识,学习这个结构是否遇到哪些困难,树结构可以解决的问题。
1.课堂上的知识也很难听懂,打代码就更难听懂了,真的需要不断练习代码。
2.树是一种非线性的数据结构,解决树的相应问题常常用递归的方法,若要使用非递归,则需要借助栈,队列等其他数据结构。
2.PTA实验作业
本周要求挑选出3道题目书写设计思路、调试过程。设计思路使用伪代码描述。题目选做要求:
2.1 题目1:6-2 求二叉树高度(20 分)
2.2 设计思路(伪代码或流程图)
/求树的高度/
设置变量m,n;
if树为空 return空
否则 m=GetHeight(BT->Left)
n=GetHeight(BT->Right)
return n+1 或m+1
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.1 题目2:6-4 jmu-ds-表达式树(25分)
2.2 设计思路(伪代码或流程图)
创建二叉树表达式
建栈op
初始化根节点:stack
while(表达式没完成)
if(ch==操作数)
然后生成一个子树T stacktree.push(T)
if(ch==运算符)
然后
while(ch<op栈顶运算符) 栈顶优先级高,然后创建一个树节点T,为op.top()
stacktree弹出2个根节点
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.1 题目3:7-2 根据后序和中序遍历输出先序遍历(25分)
2.2 设计思路(伪代码或流程图)
用递归创建树*Tree;
Tree createTree(int *pre,int *ino,int n){//传入后序变量,中序遍历,和有多少个元素
/初始话双亲节点
int一个初始化值为0的计数器
plpr//初始化先序的左孩子数 pl和右孩子数 pr
初始化中序的左孩子数和右孩子数
定于先序左,右孩子的分别所占的总个数
i定于先序左,右孩子的分别所占的总个数
如果传入的总个数为0返回NULL
后序的第一个是根节点
将中序遍历分割为两个数组
得到左孩子的数
左孩子装到左数组中
右孩子装到右数组中
由于左右孩子的个数相同,所以可以得到分割后的后序数组
将右孩子装在一个数组中
else
l将左孩子装在一个数组中
创建右孩子
创建左边孩子
return root返回根结点
}
//非递归算法的先序遍历
定义一个栈,一个指针
将根结点赋值给p
一个指向栈底
打印输出第一次访问节点的数
将该节点压栈
p->left让p指向它的左孩子p->left
else
出栈
p=p->right指向它的右孩子
打印输出
return 返回
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明
6-2 求二叉树高度(20 分)
6-4 jmu-ds-表达式树(25 分)
7-2 根据后序和中序遍历输出先序遍历(25 分)
3.截图本周题目集的PTA最后排名
本次题目集总分:285分
必做题共:230分
3.1 PTA排名截图
3.2 我的总分:
110分
阅读代码(必做)
https://gitee.com/specialsoldier/codes/tpzh54uks8vrc293qefio86
代码Git提交记录截图