博客作业04--树

Posted 林怡鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了博客作业04--树相关的知识,希望对你有一定的参考价值。

1.学习总结(2分)

1.1树结构思维导图

1.2 树结构学习体会

树的定义: 
树是n个结点的有限集。在任意一个非空的树中:
(1)有且仅有一个特定的称为根的结点;(2)其余结点可以分成m个互不相交的子集,其中每一个子集又是一个树,称为子树。 
结点的度: 
结点拥有的子树的个数 
树的度: 
树中各结点的度的最大值 
树的结点之间的关系: 
结点的子树的根称为该结点的孩子,此结点就是孩子的双亲;同一个双亲的孩子称为兄弟;结点的祖先是从根节点到该结点所经过的所有结点;结点的子孙是以此结点为根的子树的子树的任一结点;双亲在同一层的结点称为堂兄弟;树中结点的最大层次称为树的深度; 
有序树:树中结点各子树看成是从左到右有次序的,不能互换的 
森林:互不相交的m个子树的集合

2.PTA实验作业

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

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

int GetHeight(BinTree BT)
     定义HL,HR用于递归求高度,MAXH用于求最高高度
     if(BT不为空){
         递归求左子树高度HL
         递归求右子树高度HR
        if(左子树HL高于右HR)  MAXH=HL;
        否则  MAXH=HR
        返回最高节点MAXH
        }
     else(BT为空)
        返回高度为0;
     

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

2.4 PTA提交列表说明。


编译错误:在代码中多次出现了中文符号的引号和逗号,经过多次修改解决

2.1 题目2:7-2 根据后序和中序遍历输出先序遍历

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

CreateBT2(后序post 中序in 个数n)
	定义树b,整形data值r
	if (n <= 0) 退出并返回0;
	r =后序最后一个节点
	int i;
	b->data = r;
	for i=0 to n-1
		if (in[i] == r) break;
        end for
	输出b->data
	应用递归求左子树下一个节点;
        应用递归求右字数下一个节点;
     

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

2.4 PTA提交列表说明。


部分正确: post 和 in的数组给的值太少 导致段错误

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

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

void 建树
{
    建op栈,树s
    #进栈
    while(str[i]!=NULL)
           if(str[i]是运算符){
                    以str[i]为数据,建立s节点
           }
           else{
                    if(str[i]比栈顶优先级小)  进站
                    else  if(优先级相同)    出栈
                    else  建立下一个节点并进栈
            
}
}

void 计算
            double a,b
            if(树空) 返回0;
            if(是叶子节点)  返回   T->data-\'0\'
            计算左孩子
            计算右孩子
            switch(T->data)
                    case +  :返回a+b
                    case -  :返回a-b
                    case * :返回 a*b
                    case / :   若a不为0  返回b/a
                                   否则返回 输出 drive 0 error!
     

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



2.4提交列表代码说明

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

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

3.1 PTA排名截图


编译错误:在选择C和C++时没注意到用的是C 导致代码出错一直不过

3.2 我的总分:186

本题评分规则:

(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. 阅读代码(必做)

 1949年的国庆节(10月1日)是星期六。 
   今年的国庆节是星期一。
    那么,从建国到2012年,有几次国庆节正好是星期日呢?

#include<stdio.h>  
int Run(int year)  
{  
    if(year%400==0||(year%4==0&&year%100!=0))  
    return 1;  
    else  
    return 0;  
}  
int month(int year,int n)  
{  
    int aws;  
    switch(n)  
    {  
       case 1:aws=31;break;  
       case 2:{  
            if(Run(year))  
            aws=29;  
            else aws=28;  
       }break;  
       case 3:aws=31;break;  
       case 4:aws=30;break;  
       case 5:aws=31;break;  
       case 6:aws=30;break;  
       case 7:aws=31;break;  
       case 8:aws=31;break;  
       case 9:aws=30;break;  
       case 10:aws=31;break;  
       case 11:aws=30;break;  
       case 12:aws=31;break;  
    }  
    return aws;  
}  
int main()  
{  
    int i,j,x,sum;  
    sum=5;  
    for(i=10;i<=12;i++)  
    {  
      sum+=month(1949,i);  
    }  
    for(i=1950;i<=2017;i++)//今天是2018年5月5日,所以算到2017年即可   
    {  
      for(j=1;j<=12;j++)  
      {  
         sum+=month(i,j);  
         if(j==9)  
         {  
            x=sum%7;  
            if(x+1==7)  
            printf("%d年的国庆节是星期日。\\n",i);  
         }  
      }  
    }  
    return 0;  
}  
先用一个函数判断是否是闰年 在用一个函数判断每个月有几天  如果是九月份最后一天是星期1   则10月1号是星期天     则该次计入   从1950到2017年全部计入后 得到总数则为结果

5. 代码Git提交记录截图

在码云的项目中,依次选择统计-Commits历史-设置时间段,进行搜索并截图,如下图所示,需要出现学号、项目提交说明。请在码云中将你的昵称改为“学号-姓名”。

以上是关于博客作业04--树的主要内容,如果未能解决你的问题,请参考以下文章

博客作业04--树

博客作业04--树

博客作业04--树

博客作业04--树

博客作业04--树

博客作业04--树