Menu
CoddyTech

Symmetric Tree

Bạn được cung cấp một cây nhị phân lưu trong mảng tree theo thứ tự từng tầng. Nút gốc nằm ở chỉ số 0, các nút con của nút ở 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à mảng có thể kết thúc bằng các phần tử -1 thừa. Trả về true nếu cây là ảnh phản chiếu của chính nó qua đường thẳng đứng đi qua nút gốc, và false trong trường hợp còn lại. Cả hình dạng lẫn giá trị đều phải khớp.

Hàm

isSymmetric(tree: integer-array) → boolean
treeinteger-array
cây nhị phân theo thứ tự từng mức, dùng -1 cho vị trí trống
Trả vềboolean
đúng nếu cây đối xứng với chính nó, sai nếu không

Ràng buộc

  • 1 ≤ tree.length ≤ 32767
  • Mỗi tree[i] là -1 hoặc một giá trị thỏa mãn 0 ≤ tree[i] ≤ 1000.
  • tree[0] không bao giờ là -1, vì vậy cây có ít nhất một nút.
  • Mảng 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.

Ví dụ

Đầu vào
tree = [1, 2, 2, 3, 4, 4, 3]
Đầu ra
true
Giải thích
Gập cây lại theo trục giữa. Hai số 2 ở chỉ số 1 và 2 gặp nhau, hai số 3 ở ngoài tại chỉ số 3 và 6 gặp nhau, còn hai số 4 ở trong tại 4 và 5 gặp nhau.
challenge icon

Câu hỏi mở rộng

Nếu hình dạng phản chiếu qua chính nó nhưng một số giá trị không khớp, bạn cần thay đổi ít nhất bao nhiêu giá trị nút để cây đối xứng?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

tree = [1, 2, 2, 3, 4, 4, 3]

Đầu ra mong đợi

true