BÀI VIẾT
Ghi chép về xây dựng và vận hành hệ thống
Bài kỹ thuật — kiến trúc, bảo mật, và đôi khi là chuyện chiến trường.
#bfs · Tất cả bài viết
Series
Thẻ
- #leetcode 50
- #array 13
- #dfs 11
- #recursion 10
- #bfs 9
- #dynamic-programming 9
- #arrays 7
- #hash-table 7
- #trees 7
- #binary-search 6
- #two-pointers 6
- #string 5
- #backtracking 4
- #dp 4
- #graphs 4
- #greedy 4
- #matrix 4
- #sliding-window 4
- #hash-map 3
- #heap-priority-queue 3
- #linked-list 3
- #binary-search-tree 2
- #heap 2
- #math 2
- #memoization 2
- #priority-queue 2
- #sorting 2
- #stack 2
- #strings 2
- #binary-tree 1
- #bit-manipulation 1
- #bucket-sort 1
- #counting 1
- #cycle-detection 1
- #divide-and-conquer 1
- #geometry 1
- #kadane 1
- #multi-source-bfs 1
- #prefix-sum 1
- #quickselect 1
- #simulation 1
- #string-matching 1
- #topological-sort 1
- #union-find 1
01
Clone Graph: sao chép sâu một cấu trúc đồ thị có chu trình
Clone một đồ thị nghĩa là tạo ra một bản sao hoàn toàn độc lập — nhưng đồ thị có chu trình, nên nếu duyệt đệ quy thuần túy thì sẽ lặp vô hạn. Giải pháp gọn nhất là một hash map và một quy tắc về thứ tự đăng ký clone.14 thg 6, 2026 · 10 phút đọc · #00046
02
Same Tree: hai cây, một câu hỏi đệ quy
Kiểm tra xem hai binary tree có giống hệt nhau hay không quy về một câu hỏi đệ quy duy nhất tại mỗi cặp node. Giải pháp DFS chỉ cần ba base case và một câu lệnh return. Nhưng BFS — xử lý hai cây theo từng level trong cùng một queue — cũng đáng hiểu, và các edge case ẩn chứa một vài chi tiết dễ nhầm.14 thg 6, 2026 · 11 phút đọc · #00033
03
Number of Islands: flood-fill, BFS, và khi nào Union-Find mới thực sự xứng đáng
LeetCode 200 yêu cầu đếm số đảo trong một lưới nhị phân. Ba cách tiếp cận — DFS flood-fill, BFS, và Union-Find — đều ra kết quả đúng, nhưng constraints cho bạn biết chính xác nên dùng cái nào và tại sao.14 thg 6, 2026 · 13 phút đọc · #00045
04
Course Schedule: phát hiện chu trình là toàn bộ bài toán
LeetCode 207 trông như bài toán lập lịch học nhưng thực chất là hỏi liệu đồ thị có hướng có chứa chu trình hay không. Khi nhìn thấy điều đó, hai giải pháp rõ ràng hiện ra — DFS ba màu và Kahn's BFS topological sort — cùng chạy O(V+E), khác nhau ở chỗ bạn có cần thứ tự sắp xếp sau này không.14 thg 6, 2026 · 13 phút đọc · #00047
05
Bottom-Up DP Thắng Recursion: Giải Coin Change trong O(S×n)
LeetCode 322 là bài toán unbounded knapsack kinh điển. Đi qua cả bốn cách tiếp cận — brute force recursion, top-down memoization, bottom-up tabulation, và BFS — để hiểu tại sao dp table hoạt động và khi nào mỗi phiên bản phát huy tác dụng.14 thg 6, 2026 · 12 phút đọc · #00049
06
Rotting Oranges: vì sao multi-source BFS tốt hơn simulation từng phút
LeetCode 994 hỏi mất bao lâu để cam thối lan khắp lưới. Simulation thẳng thắn có thể giải được, nhưng một lượt BFS multi-source vừa gọn hơn vừa nhanh hơn hẳn — và constraints chỉ ra lý do chính xác.14 thg 6, 2026 · 13 phút đọc · #00048
07
Invert Binary Tree: recursion là sự phù hợp tự nhiên
Đảo ngược binary tree là một trong những bài toán mà giải pháp đệ quy tự viết khi bạn nhìn thấy nó: hoán đổi các con, sau đó đệ quy vào mỗi cái. Phiên bản iterative với queue cũng hoạt động — chỉ là ít rõ ràng hơn tại sao bạn lại dùng nó ở đây.13 thg 6, 2026 · 12 phút đọc · #00030
08
Binary Tree Level Order Traversal: BFS với snapshot kích thước level
BFS trên cây xử lý các node theo từng cấp độ. Thủ thuật để nhóm chúng thành các danh sách riêng biệt là chụp snapshot kích thước hàng đợi ở đầu mỗi level — mọi node trong lô đó đều thuộc cùng một level, bất kể chúng đưa bao nhiêu node mới vào hàng đợi.13 thg 6, 2026 · 11 phút đọc · #00032
09
Maximum Depth of Binary Tree: chiều cao như một tính toán post-order
Chiều sâu của một cây bằng 1 cộng với chiều sâu tối đa của các cây con của nó. Đó là post-order traversal: xử lý con trước cha. Có ba cách tiếp cận — đệ quy (gọn nhất), iterative DFS với stack (cùng traversal, cơ chế khác), và BFS nơi chiều sâu bằng với số lượng level.13 thg 6, 2026 · 12 phút đọc · #00031
Đôi dòng ghi chép về những gì tôi đang xây
Nhận email khi tôi đăng bài mới — các bài kỹ thuật, không spam. Hủy đăng ký bất cứ lúc nào.