Lesson 28 — Quy hoạch động trên cây

State gắn với mỗi node, tính từ lá lên gốc bằng post-order DFS. Ba module: (1) khung DFS post-order, (2) House Robber III, (3) Tree Diameter.

Module 1 — Tree DP post-order (size subtree)

Animate DFS post-order: tô node đang xử lý (vàng), gộp dp[node] = 1 + Σ dp[con] từ lá lên gốc, hoàn tất chuyển sang xanh. Đây là subtreeSize (mục 5 README).

chưa xử lý đang xử lý đã tính dp
Bấm "Chạy từng bước" để duyệt post-order. Số đỏ dưới mỗi node = dp (size subtree).

Module 2 — House Robber III (max independent set)

Mỗi node có trọng số (tiền). Tính dp[node][0] (không cướp) và dp[node][1] (cướp). Không cướp 2 node kề. Cuối cùng tô đỏ tập node được chọn tối ưu.

đang tính đã có dp[0]/dp[1] được CƯỚP
Trọng số hiện trong node. Cặp số dưới node = [dp0 | dp1].

Module 3 — Tree Diameter (đường kính)

DFS trả down(node) = nhánh sâu nhất. Tại mỗi node giữ 2 chiều cao con lớn nhất → cập nhật đường kính. Cuối cùng tô tím đường kính.

đang xử lý đã có down trên đường kính
Số đỏ dưới node = down(node) (nhánh sâu nhất, số cạnh). Đường kính tô tím.