返回首页

深度优先搜索基础知识速览

一、面试常考点

1. DFS 本质

沿一条路径尽可能深入,走不动再回溯。

2. 两种实现

递归(更直观)与显式栈(避免深递归栈溢出)。

3. 高频题型

树遍历、图连通性、岛屿问题、回溯搜索。

二、核心模板

function dfs(node, visited) {
  if (!node || visited.has(node)) return
  visited.add(node)

  // 处理当前节点

  for (const next of node.neighbors || []) {
    dfs(next, visited)
  }
}

30 秒口述模板

我会把「深度优先搜索」分成三层来讲:先讲核心概念和它解决的问题,再讲一个高频场景与实现思路,最后补充常见坑点和优化方向。这样既能回答基础问题,也能接住面试官追问。

2 分钟口述模板

如果展开讲,我会按“定义 -> 原理 -> 场景 -> 取舍”四步回答。先说明「深度优先搜索」解决的核心问题和边界;再讲 1 到 2 个关键机制,解释为什么这样设计;然后结合一个真实业务场景说明如何落地;最后补充常见坑点、性能或稳定性优化,以及与相近方案的取舍标准。

这样回答的好处是:既有原理深度,也有工程落地感,面试官继续追问到实现细节时也能自然展开。