UVA 699 The Falling Leaves

原创 2016年08月30日 09:44:52

题目链接:http://acm.hust.edu.cn/vjudge/problem/19244



题解:给你一个先序二叉树,其中左子结点在父节点左一个单位,右节点在父节点右一个单位;
按照递归方式输入,-1表示空。让你从左到右输出每个水平位置的权值和。

 不需要真的建树 把当前位置的sum[]加上当前值就行了 


#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <cmath>
#include <stack>
#include <string>	
#include <sstream>
#include <map>
#include <set>
#define pi acos(-1.0)
#define LL long long
#define ULL unsigned long long
#define inf 0x3f3f3f3f
#define INF 1e18
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define debug(a) printf("---%d---\n", a)
#define mem0(a) memset(a, 0, sizeof(a))
#define memi(a) memset(a, inf, sizeof(a))
#define mem1(a) memset(a, -1, sizeof(a))
using namespace std;
typedef pair<int, int> P;
const double eps = 1e-10;
const int maxn = 1e6 + 5;
const int mod = 1e8;

int sum[maxn];
void Build(int pos)
{
    int v;
    cin >> v;
    if (v == -1) return;
    sum[pos] += v;
    Build(pos-1);
    Build(pos+1);
}
int main(void)
{
//	freopen("C:\\Users\\wave\\Desktop\\NULL.exe\\NULL\\in.txt","r", stdin);
    int v, cas = 1, pos;
    while (cin >> v){
        if (v == -1) break;
        memset(sum, 0, sizeof(sum));
        pos = maxn / 2;     //树根的水平位置
        sum[pos] += v;
        Build(pos-1);
        Build(pos+1);
        while (sum[pos]) pos--;	// 找最左边的结点 
        printf("Case %d:\n", cas++);
        printf("%d", sum[++pos]);
        while (sum[++pos])
            printf(" %d", sum[pos]);
        puts("\n");
    }

	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

UVa 699 The Falling Leaves (DFS遍历二叉树)

699 - The Falling Leaves Time limit: 3.000 seconds  http://uva.onlinejudge.org/index.php?option=co...

UVa 699 - The Falling Leaves

实质上是一个二叉树的DFS,先左子树,再右子树,因为题目说最大宽度为80,所以开一个80的数组,从中间(40)开始,往里递归。 以第二组数据为例, 8 2 9 -1 -1 6 5 -1 -1 ...

Uva699 The Falling Leaves 【递归输入】【例题6-10】

递归输入!同一水平位置结点和其实就是在同一下标位置上累加!
  • GuoZLH
  • GuoZLH
  • 2016年12月03日 21:15
  • 162

uva 699 The Falling Leaves (二叉树)

uva 699 The Falling Leaves Each year, fall in the North Central region is accompanied by the ...

UVa 699 The Falling Leaves(递归建树)

题意  假设一棵二叉树也会落叶  而且叶子只会垂直下落   每个节点保存的值为那个节点上的叶子数   求所有叶子全部下落后   地面从左到右每堆有多少片叶子 和上一题有点像  都是递归输入的  一个...
  • acvay
  • acvay
  • 2014年09月24日 12:48
  • 1000

The Falling Leaves UVA699

这道题题意很好理解,在判定二叉树的节点数是不是结束的时候我用到了一个定理,二叉树也节点数也就是题中-1的个数等于度数为一和二的结点个数加一,题中不存在度数为一的结点,因此很好判断树的结点是否结束,然后...

UVA 699 The Falling Leaves(二叉树)

Question: Each year, fall in the North Central region is accompanied by the brilliant colors of the...

uva 699 - The Falling Leaves

// uva 699 - The Falling Leaves // 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&...

UVA 699 The Falling Leaves (二叉树水题)

本文纯属原创,转载请注明出处,谢谢。http://blog.csdn.net/zip_fan。 Description Each year, fall in the North C...

Uva - 699 - The Falling Leaves

Uva又跪了一早晨,每次都是西班牙时间凌晨或者晚上,我们这边早晨下午的时候跪。。。最近两天跪的太频繁了点。。。 输入是先序输入,所以实现的时候可以递归输入数据,输入的同时累加位置上的权值和。 AC...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA 699 The Falling Leaves
举报原因:
原因补充:

(最多只允许输入30个字)