Menu
CoddyTech

Binary Tree Right Side View

Mảng (array) root 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 một vị trí trống, và có thể có thêm các giá trị -1 ở cuối.

Hãy nhìn cây từ phía bên phải. Ở mỗi tầng, bạn chỉ thấy đúng một nút, nút nằm xa nhất về bên phải, còn các nút khác bị che khuất. Liệt kê các giá trị đó từ tầng của gốc xuống tầng sâu nhất.

Hàm

rightSideView(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 phả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ị 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 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à cây có tối đa 14 cấp.

Ví dụ

Đầu vào
root = [5, 2, 9, 7, 4, -1, 1, -1, 3]
Đầu ra
[5, 9, 1, 3]
Giải thích
Từ bên phải, bạn thấy 5, 9 và 1 (chỉ số 6). Tầng thứ tư chỉ có 3, ở chỉ số 8 bên dưới 7 trong cây con bên trái. Không có nút nào ở bên phải sâu đến mức đó, nên có thể nhìn thấy 3.
challenge icon

Câu hỏi mở rộng

Làm thế nào để lấy hình chiếu từ bên phải của một cây mà mỗi nút có thể có số lượng nút con bất kỳ, được lưu dưới dạng danh sách từ trái sang phải?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

root = [5, 2, 9, 7, 4, -1, 1, -1, 3]

Đầu ra mong đợi

[5, 9, 1, 3]