题目地址:点击打开链接
C++代码:
#include <iostream>
using namespace std;
bool flag=false;
const int maxsize = 200;
int maxNum,minNum;
struct Tree
{
int data;
Tree *lchild,*rchild;
};
Tree *build()//建树
{
int x;
cin>>x;
if(x==-1)
return NULL;
flag=true;
Tree *p=new Tree;
p->data=x;
p->lchild=build();
p->rchild=build();
return p;
}
void pre(Tree *root,int n,int *p)//求结果
{
if(root)
{
*(p+n)+=root->data;
if(n>maxNum)
maxNum=n;
if(n<minNum)
minNum=n;
pre(root->lchild,n-1,p);
pre(root->rchild,n+1,p);
}
}
int main()
{
int cas=1,i;
while (true)
{
flag=false;
Tree *root=build();
if(flag==false)
break;
int pile[maxsize]={0};
maxNum=-1;
minNum=100000;
pre(root,50,pile);
cout<<"Case "<<cas++<<":"<<endl;
for(i=minNum;i<maxNum;++i)
cout<<pile[i]<<" ";
cout<<pile[i]<<endl<<endl;
}
return 0;
}