下落的树叶

下落的树叶


题目描述:

给一颗二叉树,每个节点都有一个水平位置:左子结点在它的左边一个单位,右子节点在右
边一个单位。从左向右输出每个水平位置的所有节点的权值之和。如图所示,从左到右的三
个位置权和分别为 7,11,3,按照递归(先序)方式输入,用-1 表示空树。

样例输入:

5 7 -1 6 -1 -1 3 -1 -1
8 2 9 -1 -1 6 5 -1 -1 12 -1 -1 3 7 -1 -1 -1 -1

样例输出:

7 11 3
9 7 21 15

代码如下:

#include <iostream>
using namespace std;
int n, a[10000], l = 5000, r = 5000;
void make_tree(int now)
{
    int x;
    cin >> x;
    if(x == -1)
        return;
    a[now] += x;
    l = min(l, now);
    r = max(r, now);
    make_tree(now - 1);
    make_tree(now + 1);
}
int main ()
{
    make_tree(5000);
    for (int i = l; i <= r; ++i)
        cout << a[i] << " ";
}

posted on 2015-09-13 22:35  MagHSK  阅读(183)  评论(0编辑  收藏  举报