UVA 699 下落的树叶 (p159, 二叉树的 DFS)

来源:互联网 发布:nba梦之队3球员数据库 编辑:程序博客网 时间:2024/04/30 21:03

分析:这个题的输入是先序遍历,发现这点很重要。统计每个层次的树叶总数,可以把整个树看作在一个一维坐标系中。



#include <stdio.h>int a[81],left,right;//记载左右边界void dfs(int num,int pos){    int x,y;    if (num!=-1)    {        if (pos<left) left=pos;        if (pos>right) right=pos;        a[pos]+=num;        scanf("%d",&x);//左子树        dfs(x,pos-1);        scanf("%d",&y);//右子树        dfs(y,pos+1);    }};int  main(){    int i,n,sum=0;    while (scanf("%d",&n)&&n!=-1)    {        for (i=0;i<81;i++) a[i]=0;        ++sum;        left=40;right=40;        dfs(n,40);        printf("Case %d:\n",sum);        for (i=left;i<right;i++)        printf("%d ",a[i]);        printf("%d\n\n",a[right]);    }    return 0;}

1 0