Menu
CoddyTech

Balanced Binary Tree

Mảng root lưu một cây nhị phân. Gốc nằm ở chỉ số 0, các nút con của chỉ số i nằm tại 2*i+1 (bên trái) và 2*i+2 (bên phải), -1 đánh dấu một vị trí trống và có thể có thêm các giá trị -1 ở cuối.

Trả về true nếu cây cân bằng chiều cao, nghĩa là tại mỗi nút, chiều cao của cây con bên trái và cây con bên phải chênh lệch không quá 1; nếu không thì trả về false. Chiều cao của một cây con là số nút trên đường đi dài nhất từ trên xuống; cây con rỗng có chiều cao 0.

Hàm

isBalanced(root: integer-array) → boolean
rootinteger-array
cây nhị phân theo thứ tự từng cấp, dùng -1 cho vị trí trống
Trả vềboolean
đúng nếu chiều cao của hai cây con của mọi nút chênh lệch không quá 1, sai trong các trường hợp khác

Ràng buộc

  • 1 ≤ root.length ≤ 32767
  • Mỗi root[i] là -1 hoặc một giá trị thỏa mãn 0 ≤ root[i] ≤ 105.
  • root[0] không bao giờ là -1, vì vậy cây có ít nhất một nút.
  • Mảng (array) có thể kết thúc bằng các phần tử -1 dư ra sau nút cuối cùng.
  • Cả hai nút con của một vị trí trống cũng đều trống, và độ sâu tối đa là 14.
  • Giá trị của các nút là khác nhau.

Ví dụ

Đầu vào
root = [5, 2, 9, -1, -1, 7, 11]
Đầu ra
true
Giải thích
Cây con bên trái của nút gốc chỉ có nút 2, chiều cao là 1. Cây con bên phải gồm 9, 7, 11, có chiều cao là 2. Hai cây con này chênh lệch nhau 1, và mọi nút khác đều có hai cây con có chiều cao bằng nhau.
challenge icon

Câu hỏi mở rộng

Bạn có thể kiểm tra cây mà không dùng đệ quy, bằng một ngăn xếp tường minh không?

Đặt lại code
def isBalanced(root):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

true