Рекурсивный анализ бинарного дерева с мемоизацией
Swift
Сложный
functions
Задача «Рекурсивный анализ бинарного дерева с мемоизацией»
Напишите функцию, которая принимает бинарное дерево, представленное в виде массива целых чисел (уровневым обходом, null обозначается как 0), и возвращает максимальную сумму значений узлов от корня до листа, при условии, что можно пропустить не более двух подряд идущих узлов на пути. Используйте рекурсивную функцию с мемоизацией для эффективного вычисления. Дерево содержит до 1000 узлов, значения от -100 до 100.
Формат ввода
Первая строка: целое число n (1 ≤ n ≤ 1000) — количество элементов в массиве. Вторая строка: n целых чисел через пробел — уровневое представление дерева (0 обозначает отсутствие узла).
Формат вывода
Одно целое число — максимальная сумма от корня до листа с учётом возможности пропустить не более двух подряд идущих узлов.
Примеры
Пример 1
ВВОД
3
ab
bc
ca
ВЫВОД
6
Пример 2
ВВОД
1
10
ВЫВОД
10
Пример 3
ВВОД
5
10 5 15 0 0
ВЫВОД
25
Пример 4
ВВОД
2
abc
def
ВЫВОД
0
main.swift