类似以这个代码
#include <iostream>
using namespace std;
const int N = 1e6 + 7;
int n;
int a[N];
int sum[N << 2];
void build(int depth, int l, int r) {
if (l == r) {
sum[depth] = a[l];
return ;
}
int mid = (l + r) >> 1;
build(depth << 1, l, mid);//遍历左儿子
build(depth << 1 | 1, mid + 1, r);//遍历右儿子
sum[depth] = sum[depth << 1] + sum[depth << 1 | 1];//递归返回每层的值
}
int main() {
cin >> n;
for (int i = 1; i <= n; i ++)
cin >> a[i];
build(1, 1, n);//层数,左右区间的端点
return 0;
}
他的复杂度多少