Menu
CoddyTech

Validate Binary Search Tree

İkili ağaç, yığın sırasına göre tree dizisinde saklanır: kök 0 indeksindedir, i indeksindeki düğümün çocukları 2*i+1 (sol) ve 2*i+2 (sağ) indekslerindedir, -1 boş bir yeri belirtir ve dizinin sonunda fazladan -1 girdileri bulunabilir.

Ağaç bir ikili arama ağacıysa true, değilse false döndüren isValidBST fonksiyonunu 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.

Fonksiyon

isValidBST(tree: integer-array) → boolean
treeinteger-array
ikili ağacı seviye sırasına göre, boş bir konum için -1 kullanarak
Döndürürboolean
Ağaç bir ikili arama ağacıysa doğru, aksi takdirde yanlış.

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, bu nedenle 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
Sırayla okunduğunda (sol alt ağaç, düğüm, sağ alt ağaç), değerler 1, 3, 6, 8, 10, 12, 15 olur. Değerler kesinlikle artar; bu nedenle her düğüm, tüm atalarının doğru tarafında bulunur.
challenge icon

Ek soru

Bir düğümün ebeveyni (i-1)/2 indeksindedir; aşağı yuvarlanır. Yığın veya özyineleme yerine ebeveynler üzerinden ilerleyerek ağacı sıralı biçimde O(1) ek alan kullanarak dolaşabilir misin?

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

Test #1

Test #2

Test #3

Argüman

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

Beklenen Çıktı

true