bfs和dfs的使用场景
2025-02-28 15:56:30

在做力扣127. 单词接龙的时候,起初我尝试了使用DFS搜索,但是会超时,于是想到使用记忆化DFS搜索,但是总会有几个用例错误,思考后发现,记忆化DFS只能找到当前某些点已经访问过的前提下当前点的最短路径,而不是全局最短路径,因此难以进行记忆化搜索。

这时才想到,在算法课上,除了DFS,实际上常常用BFS来求解图中的最短距离。换完BFS后果然代码简单了很多。

DFS和BFS的使用场景有以下不同:

DFS

  1. 适合于需要遍历所有解空间的情况。
  2. 使用回溯,适合于解递归的题目。
  3. 可以用记忆化搜索剪枝。
  4. 空间复杂度较小(树高)

BFS

  1. 适合于求解最短路径问题。
  2. 适合于求解分层处理的问题。
  3. 空间复杂度较大(树宽度)。