递归探索图或树的所有分支,常用于遍历、路径查找、回溯
❓ 什么是深度优先搜索 (DFS)?
DFS 是一种图遍历算法,从起点开始,沿着一条路径尽可能深入,直到无法继续,再回溯尝试其他路径。使用递归或栈实现。
🎯 为什么使用?
DFS 适合探索所有可能的路径、检测连通性、拓扑排序。当需要找到所有解而不是最优解时,DFS 是首选。
⚙️ 如何工作?
1. 访问当前节点,标记已访问
2. 递归访问所有未访问的邻居
3. 如果所有邻居都已访问,回溯到上一层
4. 重复直到所有节点都被访问
🎨 形象比喻
「想象在迷宫中探索。你沿着一条路一直走到死胡同,然后回头到上一个岔路口,尝试另一条路。直到找到出口或走遍所有路径。」
🔍 识别关键词
当你在题目中看到以下关键词时,考虑使用深度优先搜索 (DFS):
所有路径遍历连通岛屿组合排列
📊 时间空间复杂度
时间复杂度
O(V + E) 或 O(n)
空间复杂度
O(h),h 是递归深度
访问所有节点,空间取决于递归深度(树的高度)
按?查看快捷键