码迷,mamicode.com
首页 > 其他好文 > 详细

博客作业04--树

时间:2018-05-05 19:42:16      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:cas   中序   运算符   遍历   就是   lse   题目   amp   先序遍历   

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--树

标签:cas   中序   运算符   遍历   就是   lse   题目   amp   先序遍历   

原文地址:https://www.cnblogs.com/linyipeng/p/8994547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!