UVA

来源:互联网 发布:淘宝全屏导航条制作 编辑:程序博客网 时间:2024/06/14 11:13
#include <iostream>#include <cstring>using namespace std;const int maxn = 100;int sum[maxn];//输入并统计一颗子树,树根水平位置为 p 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; //先序遍历输入,第一个数据就是树根,如果第一个数据为 -1,说明整个树都为空 memset(sum, 0, sizeof(sum));int pos  = maxn / 2;sum[pos] = v;build (pos - 1); build (pos + 1); // biild的参数,为权值累加的位置,在数组中的下标 }int main(){int kase = 0;while (init()){int p = 0;while (sum[p] == 0) p++; //找最左边的叶子cout << "Case " << ++kase << ":" << endl << sum[p++]; // 因为要避免行末输出多余的空格while (sum[p] != 0) cout << " " << sum[p++];cout << endl << endl; //Follow the output for each case by a blank line,注意是 each case!! }return 0;}

原创粉丝点击