您的位置:首页 > 其它

UVa 699 The Falling Leaves

2015-03-14 10:58 85 查看
题意:给出按先序输入的一颗二叉树,分别求出从左到右的相同横坐标上的节点的权值之和

递归建树,然后用sum数组分别统计每一个横坐标上的权值之和

感觉建树都在递归递归递归= =慢慢理解吧

#include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<algorithm>
using namespace std;

typedef long long LL;
const int maxn=2000;
int sum[maxn];

void build(int p){
int v;
cin>>v;
if(v==-1) return;
sum[p]+=v;
build(p-1);//建左子树
build(p+1);//建右子树
}

bool init(){
int v;
cin>>v;
if(v==-1) return false;
memset(sum,0,sizeof(sum));
int pos=maxn/2;
sum[pos]=v;
//    printf("init被调用\n");
build(pos-1);build(pos+1);
}

int main()
{
int kase=0;
while(init()){
int p=0;
while(sum[p]==0) p++;
cout<<"Case "<<++kase<<":\n"<<sum[p++];
while(sum[p]!=0) cout<<" "<<sum[p++];
cout<<"\n\n";
}
return 0;
}


View Code

go---go--go
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: