Menu
CoddyTech

Maximum Depth of Binary Tree

LeichtBaumdurchlaufpython iconjava iconcpp iconc iconjs icon+10

Du erhältst einen Binärbaum, der im Level-Order-Verfahren im Array tree gespeichert ist. 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 die maximale Tiefe des Baums zurück: die Anzahl der Knoten auf dem längsten Pfad von der Wurzel hinunter zu einem Blatt.

Funktion

maxDepth(tree: integer-array) → integer
treeinteger-array
den Binärbaum in Ebenenreihenfolge, wobei -1 eine leere Stelle kennzeichnet
Gibt zurückinteger
die Anzahl der Knoten auf dem längsten Pfad von der Wurzel zu einem Blatt

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 mit zusätzlichen -1-Einträgen enden.
  • Beide Kinder einer leeren Stelle sind ebenfalls leer, und die Tiefe beträgt höchstens 14.

Beispiele

Eingabe
tree = [5, 8, 1, -1, 3, -1, -1, -1, -1, 6]
Ausgabe
4
Erklärung
Der längste Pfad ist 5, 8, 3, 6 (Indizes 0, 1, 4, 9) und enthält 4 Knoten. Der Pfad über 1 endet nach 2 Knoten.

lock icon+13 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Wie würdest du die Werte auf einem längsten Pfad von der Wurzel zu einem Blatt zurückgeben, nicht nur dessen Länge? Falls mehrere Pfade gleich lang sind, welchen würdest du zurückgeben, und wie würdest du das im Vertrag angeben?

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

Fall 1

Fall 2

Fall 3

Eingabe

tree = [5, 8, 1, -1, 3, -1, -1, -1, -1, 6]

Erwartet

4