Menu
CoddyTech

Validate Binary Search Tree

Ein Binärbaum wird im Heap-Format im Array tree gespeichert: Die Wurzel befindet sich am Index 0, die Kinder des 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.

Schreibe isValidBST, das true zurückgibt, wenn der Baum ein binärer Suchbaum ist, und andernfalls false. In einem binären Suchbaum ist der Wert jedes Knotens strikt größer als jeder Wert in seinem linken Teilbaum und strikt kleiner als jeder Wert in seinem rechten Teilbaum.

Funktion

isValidBST(tree: integer-array) → boolean
treeinteger-array
der Binärbaum in Ebenenreihenfolge, mit -1 für eine leere Stelle
Gibt zurückboolean
wahr, wenn der Baum ein binärer Suchbaum ist, andernfalls falsch

Einschränkungen

  • 1 ≤ tree.length ≤ 32767
  • Jedes tree[i] ist -1 oder ein Wert mit 0 ≤ tree[i] ≤ 105.
  • 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.
  • Werte können sich wiederholen.

Beispiele

Eingabe
tree = [8, 3, 12, 1, 6, 10, 15]
Ausgabe
true
Erklärung
Liest man in dieser Reihenfolge (linker Teilbaum, Knoten, rechter Teilbaum), lauten die Werte 1, 3, 6, 8, 10, 12, 15. Sie steigen streng an, sodass jeder Knoten auf der richtigen Seite jedes Vorfahren liegt.
challenge icon

Weiterführende Frage

Der Elternknoten eines Knotens befindet sich am Index (i-1)/2, abgerundet. Kannst du den Baum der Reihe nach mit zusätzlichem Speicherplatz von O(1) durchlaufen und dich dabei über die Elternknoten statt über einen Stack oder Rekursion bewegen?

Code zurücksetzen
def isValidBST(tree):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

tree = [8, 3, 12, 1, 6, 10, 15]

Erwartete Ausgabe

true