Rekursive Analyse eines binären Baums mit Memoisierung
Swift
Hard
functions
Aufgabe «Rekursive Analyse eines binären Baums mit Memoisierung»
Schreiben Sie eine Funktion, die einen binären Baum akzeptiert, der als Array von ganzen Zahlen dargestellt wird (Ebenendurchlauf, null wird als 0 bezeichnet), und die maximale Summe der Knotenwerte von der Wurzel bis zum Blatt zurückgibt, unter der Bedingung, dass auf dem Pfad höchstens zwei aufeinanderfolgende Knoten übersprungen werden können. Verwenden Sie eine rekursive Funktion mit Memoisierung für eine effiziente Berechnung. Der Baum enthält bis zu 1000 Knoten, Werte von -100 bis 100.
Eingabeformat
Erste Zeile: eine ganze Zahl n (1 ≤ n ≤ 1000) — die Anzahl der Elemente im Array. Zweite Zeile: n ganze Zahlen durch Leerzeichen getrennt — die Ebenendarstellung des Baums (0 bedeutet das Fehlen eines Knotens).
Ausgabeformat
Eine ganze Zahl — die maximale Summe von der Wurzel bis zum Blatt unter Berücksichtigung der Möglichkeit, höchstens zwei aufeinanderfolgende Knoten zu überspringen.
Beispiele
Beispiel 1
EINGABE
3
ab
bc
ca
AUSGABE
6
Beispiel 2
EINGABE
1
10
AUSGABE
10
Beispiel 3
EINGABE
5
10 5 15 0 0
AUSGABE
25
Beispiel 4
EINGABE
2
abc
def
AUSGABE
0
main.swift