Menu
CoddyTech

Balanced Binary Tree

Das Array root enthält einen binären Baum. Die Wurzel befindet sich am Index 0, die Kinder des Index i befinden sich an den Indizes 2*i+1 (links) und 2*i+2 (rechts), -1 kennzeichnet eine leere Stelle, und am Ende können zusätzliche Einträge -1 folgen.

Gib true zurück, wenn der Baum höhenbalanciert ist, das heißt, wenn sich an jedem Knoten die Höhen des linken und rechten Teilbaums um höchstens 1 unterscheiden, und andernfalls false. Die Höhe eines Teilbaums ist die Anzahl der Knoten auf seinem längsten Abwärtspfad; ein leerer Teilbaum hat die Höhe 0.

Funktion

isBalanced(root: integer-array) → boolean
rootinteger-array
den Binärbaum in Ebenenreihenfolge, mit -1 für eine leere Stelle
Gibt zurückboolean
wahr, wenn sich die Höhen der beiden Teilbäume jedes Knotens um höchstens 1 unterscheiden, andernfalls falsch

Einschränkungen

  • 1 ≤ root.length ≤ 32767
  • Jedes root[i] ist -1 oder ein Wert mit 0 ≤ root[i] ≤ 105.
  • root[0] ist niemals -1, daher hat der Baum mindestens einen Knoten.
  • Das Array kann nach dem letzten Knoten zusätzliche -1-Einträge enthalten.
  • Auch die beiden Kinder einer leeren Stelle sind leer, und die Tiefe beträgt höchstens 14.
  • Knotenwerte sind unterschiedlich.

Beispiele

Eingabe
root = [5, 2, 9, -1, -1, 7, 11]
Ausgabe
true
Erklärung
Der linke Teilbaum der Wurzel ist der einzelne Knoten 2 mit Höhe 1. Ihr rechter Teilbaum mit den Knoten 9, 7, 11 hat Höhe 2. Sie unterscheiden sich um 1, und jeder andere Knoten hat zwei Teilbäume gleicher Höhe.
challenge icon

Weiterführende Frage

Kannst du den Baum ohne Rekursion mithilfe eines expliziten Stapels überprüfen?

Code zurücksetzen
def isBalanced(root):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

root = [5, 2, 9, -1, -1, 7, 11]

Erwartete Ausgabe

true