女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

机器人每进入一个房间,都说“把这个房间的邻居也按同样办法查一遍”。这很像函数调用自己。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 进入标记房间
  2. 递归探索一个邻居
  3. 返回回到当前房间
  4. 继续下一个未访问邻居

递归自然表达 DFS 的深入与返回。

每层调用记着当前房间和接下来要试的方向。也可以用显式栈实现,不一定必须递归。

轮到你来试一试

不用递归,只用自己维护的栈,能写 DFS 吗?

想好了吗?点开看解释

能。关键是保留深度优先的访问顺序和返回所需状态。