递归构建前缀和平衡树
C++
Hard
recursion
任务 «递归构建前缀和平衡树»
给定一个大小为 N 的整数数组 A。需要递归地构建一棵二叉树,其中每个节点包含区间 [l, r) 上元素的前缀和,以及索引 l 和 r。根节点对应区间 [0, N)。递归地将区间对半分割(左半部分 [l, mid),右半部分 [mid, r)),直到区间长度为 1。对于每个节点,计算其区间内元素的和。按深度优先遍历(前序)输出树:对于每个节点,输出 l、r 和和。使用递归。N <= 100,数组中的数绝对值 <= 10^6。
输入格式
第一行:整数 N(1 <= N <= 100)。第二行:N 个整数 A[i](-10^6 <= A[i] <= 10^6)。
输出格式
对于每个节点,按前序遍历顺序输出三个数字:l, r, sum。每个节点占一行。如果区间为空(l == r),则不输出任何内容。
示例
示例 1
输入
4
1 2 3 4
输出
0 4 10
0 2 3
0 1 1
1 2 2
2 4 7
2 3 3
3 4 4
示例 2
输入
2
-5 5
输出
0 2 0
0 1 -5
1 2 5
main.cpp