Menu
CoddyTech

Invert Binary Tree

Bạn nhận được một cây nhị phân được lưu trong mảng tree theo thứ tự từng mức. 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.

Đảo ngược cây: hoán đổi nút con bên trái và bên phải của mọi nút để toàn bộ cây trở thành ảnh phản chiếu của nó. Trả về cây đã đảo ngược theo cùng định dạng, không có phần tử -1 ở cuối.

Hàm

invertTree(tree: integer-array) → integer-array
treeinteger-array
cây nhị phân theo thứ tự từng cấp, với -1 biểu thị vị trí trống
Trả vềinteger-array
cây phản chiếu theo thứ tự từng tầng, không có các mục -1 ở cuối

Ràng buộc

  • 1 ≤ tree.length ≤ 16383
  • 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 (array) có thể kết thúc bằng các mục -1 bổ sung 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 = [5, 3, 8, 1, 4, -1, 9]
Đầu ra
[5, 8, 3, 9, -1, 4, 1]
Giải thích
Các nút con của nút gốc 3 và 8 đổi chỗ cho nhau. Bên dưới chúng, 1 và 4 nằm dưới 3 đổi thành 4 và 1, còn 8, trước đó chỉ có nút con bên phải là 9, giờ có nút đó ở bên trái.
challenge icon

Câu hỏi mở rộng

Làm thế nào để kiểm tra xem một cây có đối xứng với chính nó hay không bằng cách dùng cùng các cặp chỉ số mà không cần tạo bản sao đảo ngược?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

tree = [5, 3, 8, 1, 4, -1, 9]

Đầu ra mong đợi

[5, 8, 3, 9, -1, 4, 1]