Menu
CoddyTech

Path Sum

LeichtBaumdurchlaufpython iconjava iconcpp iconc iconjs icon+10

Du erhältst einen Binärbaum, der im Level-Order-Verfahren im Array tree gespeichert ist, und eine Zahl targetSum. Die Wurzel befindet sich am Index 0, die Kinder des Knotens am Index i befinden sich bei 2*i+1 (links) und 2*i+2 (rechts), -1 kennzeichnet eine leere Stelle, und das Array kann mit zusätzlichen -1-Einträgen enden. Gib true zurück, wenn ein Pfad von der Wurzel abwärts zu einem Blatt Werte enthält, deren Summe targetSum ergibt, andernfalls false. Ein Blatt ist ein Knoten, dessen beide Kinderstellen leer sind.

Funktion

hasPathSum(tree: integer-array, targetSum: integer) → boolean
treeinteger-array
der Binärbaum in Level-Reihenfolge, mit -1 für eine leere Stelle
targetSuminteger
die Summe, die ein Pfad von der Wurzel zu einem Blatt erreichen muss
Gibt zurückboolean
true, wenn ein Pfad von der Wurzel zu einem Blatt die Summe targetSum ergibt, andernfalls false

Einschränkungen

  • 1 ≤ tree.length ≤ 32767
  • Jedes tree[i] ist -1 oder ein Wert mit 0 ≤ tree[i] ≤ 1000.
  • tree[0] ist niemals -1, also hat der Baum mindestens einen Knoten.
  • Das Array kann nach dem letzten Knoten noch zusätzliche -1-Einträge enthalten.
  • Beide Kinder einer leeren Stelle sind ebenfalls leer, und die Tiefe beträgt höchstens 14.
  • 0 ≤ targetSum ≤ 15000

Beispiele

Eingabe
tree = [3, 9, 6, -1, 2, 1, 7]targetSum = 14
Ausgabe
true
Erklärung
Der Pfad 3, 9, 2 (Indizes 0, 1, 4) ergibt zusammen 14, und die 2 am Index 4 ist ein Blatt.
challenge icon

Weiterführende Frage

Kannst du die Pfade zählen, deren Summe targetSum ergibt, wenn ein Pfad an einem beliebigen Knoten beginnen und an einem beliebigen darunterliegenden Knoten enden darf?

Code zurücksetzen
def hasPathSum(tree, targetSum):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

tree = [3, 9, 6, -1, 2, 1, 7]
targetSum = 14

Erwartete Ausgabe

true