Análisis recursivo de un árbol binario con memoización

Swift Hard functions

Tarea «Análisis recursivo de un árbol binario con memoización»

Escribe una función que reciba un árbol binario representado como un array de enteros (recorrido por niveles, null se denota como 0) y devuelva la suma máxima de valores de nodos desde la raíz hasta una hoja, bajo la condición de que se pueden omitir como máximo dos nodos consecutivos en el camino. Utilice una función recursiva con memoización para un cálculo eficiente. El árbol contiene hasta 1000 nodos, con valores de -100 a 100.

Formato de entrada

Primera línea: un número entero n (1 ≤ n ≤ 1000) — la cantidad de elementos en el array. Segunda línea: n números enteros separados por espacios — la representación por niveles del árbol (0 indica la ausencia de un nodo).

Formato de salida

Un único número entero — la suma máxima desde la raíz hasta una hoja, considerando la posibilidad de omitir como máximo dos nodos consecutivos.

Ejemplos

Ejemplo 1

ENTRADA
3 ab bc ca
SALIDA
6

Ejemplo 2

ENTRADA
1 10
SALIDA
10

Ejemplo 3

ENTRADA
5 10 5 15 0 0
SALIDA
25

Ejemplo 4

ENTRADA
2 abc def
SALIDA
0
main.swift