Menu
CoddyTech

Bottom View of Binary Tree

Trung bìnhDuyệt câyBămpython iconjava iconcpp iconc iconjs icon+10

Mảng root chứa một cây nhị phân: nút gốc ở chỉ số 0, các nút con của chỉ số i ở 2i+1 (bên trái) và 2i+2 (bên phải), -1 biểu thị vị trí trống, và có thể có thêm các phần tử -1 ở cuối.

Nút gốc nằm ở cột 0; đi sang trái thì lùi một cột, đi sang phải thì tiến một cột. Nhìn từ bên dưới, mỗi cột hiển thị nút sâu nhất, nếu các nút ở cùng độ sâu thì chọn nút cuối cùng khi đọc từ trái sang phải ở mức đó (nút có chỉ số lớn hơn). Trả về các giá trị bạn nhìn thấy, bắt đầu từ cột ngoài cùng bên trái.

Hàm

bottomView(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ị nhìn từ bên dưới trong từng cột, bắt đầu từ cột ngoài cùng bên trái

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, và không có giá trị nào xuất hiện hai lần.
  • 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 thừa 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ó nhiều nhất 14 cấp.

Ví dụ

Đầu vào
root = [5, 2, 9, 4, 7, 1, 6]
Đầu ra
[4, 2, 1, 9, 6]
Giải thích
Cột 0 chứa 5 và ở cấp thấp hơn hai bậc là 7 (chỉ số 4) và 1 (chỉ số 5). 1 xuất hiện sau trên cùng cấp, nên nó được hiển thị. Các cột -2, -1, 1 và 2 chứa 4, 2, 9 và 6.
challenge icon

Câu hỏi mở rộng

Nếu cần trả về mọi nút đồng hạng ở mức sâu nhất của một cột, theo thứ tự từ trái sang phải, thì phiên bản duyệt theo chiều rộng sẽ thay đổi như thế nào? Cột 0 của ví dụ 1 sẽ cho kết quả gì?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

root = [5, 2, 9, 4, 7, 1, 6]

Đầu ra mong đợi

[4, 2, 1, 9, 6]