带记忆化的二叉树递归分析

Swift Hard 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