下落的树叶

来源:互联网 发布:中国 驱逐舰 知乎 编辑:程序博客网 时间:2024/04/25 16:28

下落的树叶


题目描述:

给一颗二叉树,每个节点都有一个水平位置:左子结点在它的左边一个单位,右子节点在右
边一个单位。从左向右输出每个水平位置的所有节点的权值之和。如图所示,从左到右的三
个位置权和分别为 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] << " ";}
0 0
原创粉丝点击