DFS đi sâu theo một nhánh trước, thường dùng recursion hoặc stack; phù hợp với bài cần explore toàn bộ path, backtracking, connected components, cycle detection.
- BFS đi theo từng level bằng queue; phù hợp với shortest path không trọng số, level order traversal, minimum steps.
- Với graph, cả DFS và BFS đều cần
visitedđể tránh lặp vô hạn. - Complexity thường là O(V+E) cho graph adjacency list.
- Khi trả lời, hãy gắn lựa chọn với yêu cầu bài: nếu hỏi khoảng cách ngắn nhất trong unweighted graph, BFS tự nhiên hơn DFS.