码迷,mamicode.com
首页 > 其他好文 > 详细

UVa699 - The Falling Leaves

时间:2016-09-10 10:23:45      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

题意

给一棵二叉树,左子结点在父结点左边一个单位,右子节点在父节点的右边一个单位,按先序遍历的方式输入一棵树,-1为空结点,输出每列结点权值的和。

思路

递归建树

借了别人画的一个图

技术分享

总结

目前还不怎么会二叉树_(:з」∠)_只能照着书上写一遍,现在做到的只是能理解,还不能自己写出这个

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <cstring>
 5 typedef long long LL;
 6 const int maxn = 200;
 7 int sum[maxn];
 8 using namespace std;
 9 void build(int p)
10 {
11     int v;
12     cin >> v;
13     if(v == -1) return;
14     sum[p] += v; //每一列
15     build(p - 1);
16     build(p + 1);
17 }
18 bool init()
19 {
20     int v;
21     cin >> v;
22     if(v == -1) return false;
23     memset(sum,0,sizeof sum);
24     int pos = maxn / 2;
25     sum[pos] = v;
26     build(pos - 1);
27     build(pos + 1);
28 }
29 int main()
30 {
31     int kase = 0;
32     while(init()) {
33         int p = 0;
34         while(sum[p] == 0) p++; //找到最左边的一列
35         printf("Case %d:\n%d",++kase,sum[p++]);
36         while(sum[p])
37             printf(" %d",sum[p++]);
38         printf("\n\n");
39     }
40     return 0;
41 }

 

UVa699 - The Falling Leaves

标签:

原文地址:http://www.cnblogs.com/md-zz/p/5858776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!