Menu
CoddyTech

Lowest Common Ancestor of a BST

Bir ikili arama ağacı, tree dizisinde yığın sırasına göre saklanıyor: kök 0 indeksindedir, i indeksindeki düğümün çocukları 2*i+1 (sol) ve 2*i+2 (sağ) indekslerindedir ve -1 boş bir yeri belirtir. Bir düğümün sol alt ağacındaki her değer, düğümün değerinden küçüktür; sağ alt ağacındaki her değer ise daha büyüktür.

Ağaçta bulunan p ve q değerlerinin en düşük ortak atasının değerini döndüren lowestCommonAncestor fonksiyonunu yaz: her ikisini de alt ağacında bulunduran en derin düğüm. Bir düğüm kendi alt ağacının parçasıdır; bu nedenle p, q'nun üzerinde yer alıyorsa yanıt p'dir.

Fonksiyon

lowestCommonAncestor(tree: integer-array, p: integer, q: integer) → integer
treeinteger-array
ikili arama ağacını düzey sırasına göre, boş konumlar için -1 kullanarak
pinteger
bulunacak ilk değer
qinteger
bulunacak ikinci değer
Döndürürinteger
Alt ağacında hem p hem de q bulunan en derin düğümün değeri

Kısıtlar

  • 1 ≤ tree.length ≤ 32767
  • Her bir tree[i], -1 veya 0 ≤ tree[i] ≤ 105 değeridir.
  • tree[0] hiçbir zaman -1 değildir, dolayısıyla ağaçta en az bir düğüm vardır.
  • Dizi, son düğümden sonra fazladan -1 girdileriyle bitebilir.
  • Boş bir noktanın her iki çocuğu da boştur ve derinlik en fazla 14 olur.
  • Ağaç geçerli bir ikili arama ağacıdır, bu nedenle tüm değerleri birbirinden farklıdır.
  • p ve q, ağaçtaki düğümlerin değerleridir. Herhangi bir sırada gelebilirler ve eşit olabilirler.

Örnekler

Girdi
tree = [20, 8, 31, 3, 12, 25, 40, -1, -1, 10, 15]p = 3q = 15
Çıktı
8
Açıklama
3 ve 15'ten yukarı çıkıldığında, ikisinin de ulaştığı ilk düğüm 8'dir: 3, onun sol çocuğudur ve 15, sağındaki 12'nin altındadır. Kök 20 de ortak bir atadır, ancak daha yukarıdadır.
challenge icon

Ek soru

p veya q ağaçta bulunmayabilecek olsaydı ve bu durumda fonksiyonun -1 döndürmesi gerekseydi neyi değiştirirdin?

Kodu sıfırla
def lowestCommonAncestor(tree, p, q):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

tree = [20, 8, 31, 3, 12, 25, 40, -1, -1, 10, 15]
p = 3
q = 15

Beklenen Çıktı

8