Menu
CoddyTech

Left View of Binary Tree

Bạn nhận được một cây nhị phân dưới dạng mảng root theo thứ tự heap: gốc ở 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), còn -1 đánh dấu vị trí trống. Mảng có thể kết thúc bằng các phần tử -1 bổ sung.

Đứng ở bên trái cây. Ở mỗi tầng, bạn nhìn thấy một nút, nút ngoài cùng bên trái; các nút còn lại trong tầng bị nó che khuất. Trả về các giá trị bạn nhìn thấy, từ tầng trên cùng xuống dưới.

Hàm

leftView(root: integer-array) → integer-array
rootinteger-array
cây theo thứ tự heap, với -1 cho vị trí trống
Trả vềinteger-array
giá trị ngoài cùng bên trái của mỗi cấp, bắt đầu từ cấp cao nhất

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] ≤ 104.
  • Các giá trị của nút là khác nhau.
  • root[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 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à cây có tối đa 14 tầng.

Ví dụ

Đầu vào
root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
Đầu ra
[3, 8, 6, 1]
Giải thích
8 là một nút lá, vì vậy tầng thứ ba và thứ tư chỉ chứa 6 (chỉ số 6) và 1 (chỉ số 13), cả hai đều nằm dưới nút con bên phải 5. Bạn vẫn thấy chúng: [3, 8, 6, 1].
challenge icon

Câu hỏi mở rộng

Cấp độ d điền các chỉ số từ 2^d-1 đến 2^(d+1)-2. Bạn có thể xây dựng chế độ xem bằng cách quét các phạm vi đó mà không dùng hàng đợi hay đệ quy không? Cách đó tốn bao nhiêu khi dùng mảng được đệm?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]

Đầu ra mong đợi

[3, 8, 6, 1]