Menu
CoddyTech

Balanced Binary Tree

array root menyimpan pohon biner. Akar berada di indeks 0, anak-anak dari indeks i berada di 2*i+1 (kiri) dan 2*i+2 (kanan), -1 menandai posisi kosong, dan entri -1 tambahan dapat berada di akhir.

Kembalikan true jika pohon tersebut seimbang berdasarkan tinggi, artinya pada setiap simpul, tinggi subtree kiri dan kanan berbeda paling banyak 1, dan false jika tidak. Tinggi subtree adalah jumlah simpul pada jalur menurun terpanjangnya. Subtree kosong memiliki tinggi 0.

Fungsi

isBalanced(root: integer-array) → boolean
rootinteger-array
pohon biner dalam urutan level, dengan -1 untuk posisi kosong
Mengembalikanboolean
true jika tinggi kedua subpohon setiap node berbeda paling banyak 1, false jika tidak

Batasan

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

Contoh

Input
root = [5, 2, 9, -1, -1, 7, 11]
Output
true
Penjelasan
Subpohon kiri dari akar adalah satu-satunya node 2, dengan tinggi 1. Subpohon kanannya, yang terdiri dari 9, 7, dan 11, memiliki tinggi 2. Selisihnya adalah 1, dan setiap node lainnya memiliki dua subpohon dengan tinggi yang sama.
challenge icon

Pertanyaan lanjutan

Bisakah kamu memeriksa pohon tanpa rekursi, menggunakan stack eksplisit?

Reset kode
def isBalanced(root):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

root = [5, 2, 9, -1, -1, 7, 11]

Output yang diharapkan

true