给一颗二叉树,每个节点都有一个水平位置:左子节点在它左边1个单位,右子节点在右边一个单位,从左向右输出每个水平位置的所有节点的权值之和。按照递归方式输入,-1表示空树。
要点:
- 递归方式输入,用递归方式求解,题目额外说明输出的个数不会超过80个,换句话说,只要开 80 * 2 + 1= 161的数组将树的中心放在中间就不会越界,为了方便,将数组开大一点,当然也可以在递归过程中查看最左的pos和最右的pos,由于题目的数据量不大,因此没有必要。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 200 + 20;
int sum[maxn];
void build(int pos) {
int x