Menu
CoddyTech

Validate Binary Search Tree

Du erhältst einen Binärbaum, der in dem Array tree in Ebenenreihenfolge 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.

Schreibe eine Funktion namens isValidBST, die 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. Zwei gleiche Werte können niemals beide in einem gültigen Baum vorkommen.

Funktion

isValidBST(tree: integer-array) → boolean
treeinteger-array
den Binärbaum in Level-Order-Durchlauf, wobei -1 eine leere Stelle kennzeichnet
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.
  • Hinter dem letzten Knoten kann das Array 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
Jeder Knoten befindet sich auf der richtigen Seite jedes übergeordneten Knotens. Liest man der Reihe nach (linker Teilbaum, Knoten, rechter Teilbaum), erhält man die Werte 1, 3, 6, 8, 10, 12, 15, streng aufsteigend – genau das liefert ein Suchbaum.

lock icon+16 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Der Elternknoten des Knotens am Index i befindet sich bei (i-1)/2, abgerundet. Kannst du den Baum in-order mit O(1) zusätzlichem Speicher durchlaufen, indem du dich über die Elternknoten bewegst, statt einen Stack zu verwenden oder rekursiv vorzugehen?

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

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

true