标签:
0.唔。这道题 首先要明确根节点在哪儿 初始化成pos=maxn/2;
1.因为是先序的输入方法,所以这个建树的方法很重要
1 void build(int p) 2 { 3 int v; 4 cin>>v; 5 6 if(v!=-1) 7 { 8 sum[p]+=v; 9 build(p-1),build(p+1); 10 } 11 }
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 const int maxn=82 ; 5 int sum[maxn]; 6 int k; 7 void build(int p) 8 { 9 int v; 10 cin>>v; 11 12 if(v!=-1) 13 { 14 sum[p]+=v; 15 build(p-1),build(p+1); 16 } 17 18 } 19 void output() 20 { 21 cout<<"Case "<<++k<<":"<<endl; 22 int p=0; 23 while(sum[p]==0) p++; 24 25 cout<<sum[p++]; 26 27 while(sum[p]!=0) 28 cout<<" "<<sum[p++]; 29 cout<<endl<<endl; 30 } 31 int main() 32 { 33 int root; 34 k=0; 35 while(cin>>root) 36 { 37 memset(sum,0,sizeof(sum)); 38 if(root==-1) break; 39 int pos=maxn/2; 40 sum[pos]=root; 41 42 build(pos-1); 43 build(pos+1); 44 45 output(); 46 47 48 } 49 return 0; 50 }
标签:
原文地址:http://www.cnblogs.com/luosuo10/p/5540564.html