Đường kính và Đường đi có tổng lớn nhất trên cây nhị phân
Cho cây nhị phân với cấu trúc nút:
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: binary trees, recursion.
Nội dung đề bài
Mục tiêu kiến thức
- Áp dụng quy hoạch động trên cây (Tree DP) theo thứ tự hậu thứ tự (Post-order Traversal).
- Tính đường kính cây nhị phân: độ dài (số lượng cạnh) của đường đi dài nhất giữa hai nút bất kỳ.
- Tính tổng đường đi lớn nhất (Maximum Path Sum): đường đi liên tục qua các nút liền kề, mỗi nút đi qua tối đa 1 lần, hỗ trợ các nút có giá trị âm.
Mô tả bài toán
Cho cây nhị phân với cấu trúc nút:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = rightViết hàm binary_tree_path_metrics(root: TreeNode | None) -> tuple[int, int]:
- Trả về
(diameter, max_path_sum). - Nếu
rootlàNone, trả về(0, 0). diameter: Số lượng cạnh trên đường đi dài nhất giữa hai nút bất kỳ trong cây (đường đi này có thể hoặc không đi qua gốc).max_path_sum: Tổng lớn nhất của một đường đi bất kỳ (phải chứa ít nhất 1 nút). Nếu cây toàn giá trị âm, trả về giá trị nút lớn nhất (ít âm nhất).
Để kiểm thử thuận tiện, module cần cung cấp thêm hàm: build_tree(values: list) -> TreeNode | None xây dựng cây theo thứ tự tầng (Level-order).
Input
- Tham số:
root: TreeNode | None.
Output
- Trả về:
tuple[int, int].
Ràng buộc
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
TreeNode([1, 2, 3, 4, 5])Output
[3, 11]Giải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Ví dụ 2
Input
TreeNode([-10, 9, 20, None, None, 15, 7])Output
[3, 42]Giải thích
Hàm được gọi với bộ tham số thứ hai và trả về kết quả tương ứng theo thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
