Construcción recursiva de un árbol balanceado a partir de sumas de prefijos
C++
Hard
recursion
Tarea «Construcción recursiva de un árbol balanceado a partir de sumas de prefijos»
Dado un arreglo de números enteros A de tamaño N. Se requiere construir recursivamente un árbol binario, donde cada nodo contiene la suma de prefijos de los elementos en el segmento [l, r), así como los índices l y r. La raíz corresponde al segmento [0, N). Divida recursivamente el segmento por la mitad (mitad izquierda [l, mid), mitad derecha [mid, r)) hasta que la longitud del segmento sea 1. Para cada nodo, calcule la suma de los elementos en su segmento. Imprima el árbol en orden de recorrido en profundidad (pre-order): para cada nodo, imprima l, r y la suma. Use recursión. N <= 100, números en el arreglo en valor absoluto <= 10^6.
Formato de entrada
Primera línea: un entero N (1 <= N <= 100). Segunda línea: N números enteros A[i] (-10^6 <= A[i] <= 10^6).
Formato de salida
Para cada nodo en orden pre-order, imprima tres números: l, r, sum. Cada nodo en una línea separada. Si el segmento está vacío (l == r), no imprima nada.
Ejemplos
Ejemplo 1
ENTRADA
4
1 2 3 4
SALIDA
0 4 10
0 2 3
0 1 1
1 2 2
2 4 7
2 3 3
3 4 4
Ejemplo 2
ENTRADA
2
-5 5
SALIDA
0 2 0
0 1 -5
1 2 5
main.cpp