0.唔。这道题 首先要明确根节点在哪儿 初始化成pos=maxn/2;
1.因为是先序的输入方法,所以这个建树的方法很重要
void build(int p) { int v; cin>>v; ) { sum[p]+=v; build(p-),build(p+); } }
#include <iostream> #include <cstring> using namespace std; ; int sum[maxn]; int k; void build(int p) { int v; cin>>v; ) { sum[p]+=v; build(p-),build(p+); } } void output() { cout<<"Case "<<++k<<":"<<endl; ; ) p++; cout<<sum[p++]; ) cout<<" "<<sum[p++]; cout<<endl<<endl; } int main() { int root; k=; while(cin>>root) { memset(sum,,sizeof(sum)); ) break; ; sum[pos]=root; build(pos-); build(pos+); output(); } ; }