Menu
CoddyTech

Binary Tree Level Order Traversal

Mảng (array) tree chứa một cây nhị phân. 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 vị trí trống và có thể có thêm các phần tử -1 ở cuối.

Trả về các giá trị nút theo từng cấp: một danh sách cho mỗi cấp, từ gốc xuống cấp sâu nhất, mỗi danh sách chứa các giá trị theo thứ tự từ trái sang phải.

Hàm

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-array
cây theo thứ tự heap, với -1 cho vị trí trống
Trả vềinteger-2d-array
mỗi cấp độ có một danh sách giá trị, bắt đầu từ cấp cao nhất, lần lượt từ trái sang phải

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 thừa sau nút cuối cùng.
  • 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 = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
Đầu ra
[[4], [9, 2], [6, 8, 5], [3]]
Giải thích
Chỉ số 3 trống, nên 9 chỉ có nút con bên phải là 6. Tầng thứ ba gồm 6, 8, 5, còn 3 ở chỉ số 9 nằm bên dưới 6 và đứng một mình ở tầng thứ tư.
challenge icon

Câu hỏi mở rộng

Bạn có thể trả về các mức theo thứ tự zíc zắc, mức đầu tiên từ trái sang phải, mức thứ hai từ phải sang trái, cứ thế tiếp tục, mà không sắp xếp bất kỳ mức nào không?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

[[4], [9, 2], [6, 8, 5], [3]]