深度优先搜索 高频追问 Q&A
1. Q: DFS 和 BFS 本质区别?
A: DFS 深入后回溯,BFS 按层扩展。
2. Q: DFS 为什么容易爆栈?
A: 递归深度过深。可改显式栈迭代实现。
3. Q: 图 DFS 为什么必须 visited?
A: 防止回路导致重复遍历甚至死循环。
4. Q: 回溯和 DFS 什么关系?
A: 回溯是带“撤销选择”的 DFS。
5. Q: 什么时候用递归,什么时候用迭代?
A: 规模小/结构清晰可递归;深度大或线上稳定性优先迭代。
6. Q: 复杂度怎么估?
A: 图遍历通常 O(V+E),回溯按搜索树分支数与深度估计。