AI Empire Academy
CHUYÊN ĐỀ C++ THỰC CHIẾN

Bài tập Cấu trúc Cây (Trees) & Thuật toán trên Cây trong C++

Cây là dạng đồ thị đặc biệt không có chu trình. Luyện tập các kỹ thuật quy hoạch động trên cây, nhảy nhị phân và trải phẳng cây để giải quyết truy vấn hiệu quả.

18

bài tập có chấm code

Bài tập theo chuyên đề, có đề bài, ví dụ và starter code riêng.

0

cơ bản

Củng cố nền tảng và làm quen với kỹ thuật cốt lõi.

0

trung bình

Kết hợp nhiều bước suy luận để vận dụng kiến thức.

18

nâng cao

Thử thách tối ưu, cấu trúc dữ liệu và thuật toán chuyên sâu.

Lộ trình thực hành đề xuất

Bước 1

Khái niệm & Duyệt cây

Biểu diễn cây có gốc, duyệt DFS tính bậc, chiều cao và kích thước cây con.

Bước 2

Đường kính của cây

Tìm khoảng cách lớn nhất giữa hai nút trên cây bằng 2 lần duyệt BFS/DFS.

Bước 3

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

Tính toán giá trị tối ưu của các cây con từ lá lên gốc (Tree DP).

Bước 4

Tổ tiên chung gần nhất (LCA)

Thuật toán Binary Lifting trả lời truy vấn LCA trong thời gian O(log N).

Lỗi thường gặp & Cách phòng tránh

•

Xử lý cây như đồ thị có hướng trong khi cạnh của cây là vô hướng (cần truyền nút cha parent để tránh duyệt ngược).

•

Quên khởi tạo bảng nhảy up[N][20] cho thuật toán Binary Lifting.

Danh sách bài tập thực hành (18 bài)

Trong mỗi mức độ, bài tập được xếp từ dễ nhất đến khó nhất — hãy đi theo số bước.

Nâng cao 18 bài

Thử thách

Thuật toán chuyên sâu: quy hoạch động, đồ thị, cây.

Chuyên sâu

Cấu trúc dữ liệu nâng cao và nhiều bước chứng minh.

Tối ưu & chứng minh

Ràng buộc chặt về thời gian và bộ nhớ — mức thi đấu.