开始理解递归遍历树了。
注意清零的时候要乘以一个sizeof(int)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
const int maxn=10000;
int sum[maxn]={0};
void build(int p){
int node;
scanf("%d",&node);
if(node==-1) return ; //出口条件
else sum[p]+=node;
build(p-1);
build(p+1);
}
bool init( ){
int pos=maxn/2,val;
scanf("%d",&val);
if(val==-1) return false;
memset(sum,0,maxn*sizeof(int));
sum[pos]+=val;
build(pos-1);
build(pos+1);
return true;
}
int main (void){
int kase=1;
while(init()){
int p=0;
while(!sum[p]) p++;
printf("Case %d:\n",kase++);
while(sum[p]){
printf("%d",sum[p++]);
if(sum[p])
printf(" ");
}
printf("\n\n");
}
return 0;
}