第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的右孩子进行递归运算; break; return;
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提交记录截图