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