Menu
CoddyTech

Lowest Common Ancestor of a Binary Tree

Du erhältst einen Binärbaum im Array root in Heap-Anordnung: Die Wurzel befindet sich am Index 0, die Kinder des Index i an den Indizes 2*i+1 (links) und 2*i+2 (rechts), und -1 steht für eine leere Position. Die Werte sind verschieden und folgen keiner bestimmten Reihenfolge.

Gib den Wert des niedrigsten gemeinsamen Vorfahren von p und q zurück, den Werten zweier verschiedener Knoten: des tiefsten Knotens, dessen Teilbaum beide enthält. Ein Teilbaum schließt seinen obersten Knoten ein. Wenn also q unterhalb von p liegt, lautet die Antwort p.

Funktion

lowestCommonAncestor(root: integer-array, p: integer, q: integer) → integer
rootinteger-array
den Binärbaum in Level-Reihenfolge, mit -1 für eine leere Stelle
pinteger
der Wert eines Knotens
qinteger
der Wert eines anderen Knotens
Gibt zurückinteger
der Wert des niedrigsten Knotens, in dessen Teilbaum sich sowohl p als auch q befinden

Einschränkungen

  • 2 ≤ root.length ≤ 32767
  • Jedes root[i] ist -1 oder ein Wert mit 0 ≤ root[i] ≤ 104.
  • root[0] ist niemals -1, und der Baum hat mindestens zwei Knoten.
  • Das Array kann nach dem letzten Knoten mit zusätzlichen -1-Einträgen enden.
  • Beide Kinder eines leeren Feldes sind ebenfalls leer, und die Tiefe beträgt höchstens 14.
  • Alle Werte im Baum sind verschieden und folgen keiner Ordnung.
  • p und q sind die Werte zweier verschiedener Knoten im Baum, in beliebiger Reihenfolge.

Beispiele

Eingabe
root = [8, 3, 10, 6, 4, 12, 1, -1, -1, 7, 9]p = 6q = 9
Ausgabe
3
Erklärung
6 ist das linke Kind von 3, und 9 befindet sich unter 4 rechts von 3, also treffen sie sich bei 3. Ein Vergleich der Werte würde auf die Wurzel 8 verweisen: 6 ist kleiner und 9 größer.
challenge icon

Weiterführende Frage

Wenn p oder q fehlen können und -1 die Antwort ist: Welche Abkürzung in einem einzigen Durchlauf funktioniert dann nicht mehr, und wie kannst du trotzdem in einem Durchlauf fertig werden?

Code zurücksetzen
def lowestCommonAncestor(root, p, q):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

root = [8, 3, 10, 6, 4, 12, 1, -1, -1, 7, 9]
p = 6
q = 9

Erwartete Ausgabe

3