第04次作业-树

1.学习总结

1.1树结构思维导图

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

 

1.2 树结构学习体会

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

1.树是一种较为抽象的非线性结构,是较难点,部分固定的套路公式要牢记,灵活运用。

2.课堂上的知识都能听懂,但是一到打代码就开始慌了,需要加强代码的练习。

3.一些代码可以在书本上找到范例,要多研究课本。

2.PTA实验作业

本周要求挑选出3道题目书写设计思路、调试过程。设计思路使用伪代码描述。

2.1 题目1:7-1 还原二叉树

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

/*RestoreTree函数*/
建立头结点 head;
for i=0;i小于n-1时;
  if 字符串z第i位等于字符串x的第x1位且i不等于z1;
     对head的左孩子进行递归运算;
  if 字符串z第i位等于字符串x的第x1位且i不等于z2;
     对head的右孩子进行递归运算;
breakreturn

 

 

 

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

2.4 PTA提交列表说明

编译错误:结构体没有设置好,导致编译错误。

答案错误:建树函数忘记return p。

编译错误:struct Node、mallco语句出错。

2.1 题目2:6-2 求二叉树高度

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

/*求树的高度*/
设置 lchild,rchild;
if 树为空 return空;
else
遍历lchild=GetHeight;
遍历rchild=GetHeight;
return lchild和rchild中值较大的值+1

 

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

 

2.4 PTA提交列表说明

 这题较为简单,可以在书上找到范例。

2.1 题目3:6-4 jmu-ds-表达式树

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

/*InitExpTree函数*/
设置栈 op tree
push '#'
while str[i]不为空
if In函数为假
建立新节点,push T
else switch
case '<' 入栈str[i] break
case '=' 栈顶出栈 break
case '>' 建立新节点T,将数据存入树中并出栈数据 break
while 栈顶不为'#'
建立新节点T,将数据存入树中并出栈数据

 

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

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

本次题目集总分:285分
必做题共:230分

3.1 PTA排名截图

 

3.2 我的总分:230分——2.5分

本题评分规则:

1)2个题目集PTA总分285分:3分(全部题目都做)
 (2)PTA总分在230分--340分:2.5分(必做题全部做完,选做题做部分)
 (3)PTA总分在180--230分:2分(必做题大部分做完)
 (4)PTA总分在130--180分:1.5分
 (5)PTA总分在105分-130分:1分  
 (6)PTA总分在105分以下:0分     

4. 阅读代码(必做)

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 char a[1000];
 5 int ant = 0,c = 0;
 6 typedef struct Node
 7 {
 8     char Data;
 9     struct Node *Left,*Right;
10 }Node;
11 Node *CreatNode()
12 {
13     Node *p = (Node *)malloc(sizeof(Node));
14     p -> Left = p -> Right = NULL;
15     return p;
16 }
17 Node *CreatTree()
18 {
19     if(a[ant] == '#')
20     {
21         ant ++;
22         return NULL;
23     }
24     Node *head = CreatNode();
25     head -> Data = a[ant ++];
26     head -> Left = CreatTree();
27     head -> Right = CreatTree();
28     if(head -> Left == NULL && head -> Right == NULL)c ++;
29     return head;
30 }
31 void InOrder(Node *T)
32 {
33     if(T == NULL)return;
34     InOrder(T -> Left);
35     putchar(T -> Data);
36     InOrder(T -> Right);
37 }
38 int main()
39 {
40     scanf("%s",a);
41     Node *head = CreatTree();
42     InOrder(head);
43     putchar('\n');
44     putchar('0'+c);
45 }

 

地址:http://www.cnblogs.com/8023spz/p/7711373.html
优点:运用递归的方法,将程序简化,找到叶子结点后c++。

5. 代码Git提交记录截图

 

posted @ 2018-05-05 20:37  云中哟喂  阅读(142)  评论(0编辑  收藏  举报