Menu
CoddyTech

Validate Binary Search Tree

Pohon biner disimpan dalam array tree dengan urutan heap: akar berada di indeks 0, anak-anak dari indeks i berada di 2*i+1 (kiri) dan 2*i+2 (kanan), -1 menandai tempat kosong, dan array dapat diakhiri dengan entri -1 tambahan.

Tulis isValidBST, yang mengembalikan true jika pohon tersebut adalah pohon pencarian biner dan false jika tidak. Dalam pohon pencarian biner, nilai setiap node harus lebih besar secara ketat daripada setiap nilai di subtree kirinya dan lebih kecil secara ketat daripada setiap nilai di subtree kanannya.

Fungsi

isValidBST(tree: integer-array) → boolean
treeinteger-array
pohon biner dalam urutan level, dengan -1 untuk posisi kosong
Mengembalikanboolean
true jika pohon tersebut adalah pohon pencarian biner, false jika tidak

Batasan

  • 1 ≤ tree.length ≤ 32767
  • Setiap tree[i] bernilai -1 atau nilai dengan 0 ≤ tree[i] ≤ 105.
  • tree[0] tidak pernah -1, jadi pohon memiliki setidaknya satu node.
  • array tersebut mungkin diakhiri dengan entri -1 tambahan setelah node terakhir.
  • Kedua anak dari posisi kosong juga kosong, dan kedalamannya paling banyak 14.
  • Nilai dapat berulang.

Contoh

Input
tree = [8, 3, 12, 1, 6, 10, 15]
Output
true
Penjelasan
Jika dibaca secara berurutan (subtree kiri, node, subtree kanan), nilainya adalah 1, 3, 6, 8, 10, 12, 15. Nilai-nilai tersebut meningkat secara ketat, jadi setiap node berada di sisi yang benar dari setiap leluhur.
challenge icon

Pertanyaan lanjutan

Simpul induk sebuah node berada pada indeks (i-1)/2, dibulatkan ke bawah. Bisakah kamu menelusuri tree secara berurutan dengan ruang tambahan O(1), berpindah melalui simpul induk alih-alih menggunakan stack atau rekursi?

Reset kode
def isValidBST(tree):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

true