第四次作业 树

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提交记录截图

 

posted @ 2018-05-06 22:57  黄茂云  阅读(284)  评论(0编辑  收藏  举报