Menu
CoddyTech

Validate Binary Search Tree

Seviye sırasına göre tree dizisinde saklanan bir ikili ağaç alıyorsun. Kök 0 indeksinde bulunur, i indeksindeki düğümün çocukları 2*i+1 (sol) ve 2*i+2 (sağ) indekslerinde bulunur, -1 boş bir konumu belirtir ve dizinin sonunda fazladan -1 girdileri olabilir.

Ağaç bir ikili arama ağacıysa true, değilse false döndüren isValidBST adlı bir fonksiyon yaz. İkili arama ağacında her düğümün değeri, sol alt ağacındaki tüm değerlerden kesinlikle büyük ve sağ alt ağacındaki tüm değerlerden kesinlikle küçüktür. Eşit iki değer hiçbir zaman geçerli bir ağaçta birlikte bulunamaz.

Fonksiyon

isValidBST(tree: integer-array) → boolean
treeinteger-array
ikili ağaçta seviye sırasına göre, boş bir konum için -1
Döndürürboolean
ağaç bir ikili arama ağacıysa true, değilse false

Kısıtlar

  • 1 ≤ tree.length ≤ 32767
  • Her tree[i], -1 veya 0 ≤ tree[i] ≤ 105 koşulunu sağlayan bir değerdir.
  • 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.
  • Değerler tekrarlanabilir.

Örnekler

Girdi
tree = [8, 3, 12, 1, 6, 10, 15]
Çıktı
true
Açıklama
Her düğüm, üstündeki her düğümün doğru tarafında yer alır. Sırayla (sol alt ağaç, düğüm, sağ alt ağaç) okunduğunda değerler 1, 3, 6, 8, 10, 12, 15 şeklinde, kesin olarak artan sırada gelir; arama ağacı da bunu sağlar.

lock iconGönderirken +16 gizli test

challenge icon

Ek soru

i indeksindeki düğümün ebeveyni, aşağı yuvarlanmış (i-1)/2 konumundadır. Yığın tutmadan veya özyineleme kullanmadan, bunun yerine ebeveynler arasında ilerleyerek ağacı sıralı biçimde O(1) ek alanla dolaşabilir misin?

Kodu sıfırla
def isValidBST(tree):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

true