Menu
CoddyTech

Lowest Common Ancestor of a Binary Tree

Otrzymujesz drzewo binarne w tablicy root, w porządku kopcowym: korzeń znajduje się pod indeksem 0, dzieci węzła o indeksie i pod indeksami 2*i+1 (lewe) i 2*i+2 (prawe), a wartość -1 oznacza puste miejsce. Wartości są różne i nie są uporządkowane.

Zwróć wartość najniższego wspólnego przodka węzłów p i q, czyli dwóch różnych wartości: najgłębiej położonego węzła, którego poddrzewo zawiera oba te węzły. Poddrzewo obejmuje swój wierzchołek, więc jeśli q znajduje się poniżej p, odpowiedzią jest p.

Funkcja

lowestCommonAncestor(root: integer-array, p: integer, q: integer) → integer
rootinteger-array
drzewo binarne w kolejności poziomami, z wartością -1 w pustym miejscu
pinteger
wartość jednego węzła
qinteger
wartość innego węzła
Zwracainteger
wartość najniższego węzła, którego poddrzewo zawiera zarówno p, jak i q

Ograniczenia

  • 2 ≤ root.length ≤ 32767
  • Każdy element root[i] ma wartość -1 lub wartość spełniającą warunek 0 ≤ root[i] ≤ 104.
  • root[0] nigdy nie jest -1, a drzewo ma co najmniej dwa węzły.
  • Tablica może kończyć się dodatkowymi wpisami -1 za ostatnim węzłem.
  • Oboje dzieci pustego miejsca również są puste, a głębokość wynosi najwyżej 14.
  • Wszystkie wartości w drzewie są różne i nie są uporządkowane.
  • p i q to wartości dwóch różnych węzłów w drzewie, w dowolnej kolejności.

Przykłady

Wejście
root = [8, 3, 10, 6, 4, 12, 1, -1, -1, 7, 9]p = 6q = 9
Wyjście
3
Wyjaśnienie
6 jest lewym dzieckiem 3, a 9 znajduje się poniżej 4, po prawej stronie 3, więc ich wspólnym przodkiem jest 3. Porównanie wartości wskazałoby korzeń 8: 6 jest mniejsze, a 9 większe.
challenge icon

Pytanie dodatkowe

Jeśli p lub q może nie występować, a odpowiedzią jest -1, który skrót w pojedynczym przebiegu przestaje działać i jak mimo to ukończyć zadanie podczas jednego przejścia?

Zresetuj kod
def lowestCommonAncestor(root, p, q):
    # Wpisz tutaj kod

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

3