Menu
CoddyTech

Path Sum

LeichtBaumdurchlaufpython iconjava iconcpp iconc iconjs icon+10

Du erhältst einen Binärbaum, der im Array tree in Ebenenreihenfolge 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 es einen Pfad von der Wurzel abwärts zu einem Blatt gibt, dessen Werte sich zu targetSum addieren, andernfalls false. Ein Blatt ist ein Knoten ohne Kinder: Beide seiner Kinderstellen sind leer.

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 bis zu einem Blatt erreichen muss
Gibt zurückboolean
wahr, wenn ein Pfad von der Wurzel zu einem Blatt die Summe targetSum ergibt, andernfalls falsch

Einschränkungen

  • 1 ≤ tree.length ≤ 32767
  • Jedes tree[i] ist -1 oder ein Wert mit 0 ≤ tree[i] ≤ 1000.
  • tree[0] ist niemals -1, daher 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 an Index 4 ist ein Blatt.

lock icon+14 versteckte Tests beim Einreichen

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 kann und nicht nur von der Wurzel zu einem Blatt verläuft?

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

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

true