You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用栈替代队列实现BFS是否等同于无递归DFS?

用栈替代队列实现BFS是否等价于无递归DFS?

是的,这个观点完全正确。

常规BFS依赖队列的**先进先出(FIFO)特性,按层级依次处理节点,确保同一层的节点全部处理完后才进入下一层。而换成栈的后进先出(LIFO)**结构后,每次弹出栈顶元素并推入其子节点时,下一个被处理的必然是刚推入的子节点——也就是会优先沿着当前节点的分支深入遍历,而非处理同层级的其他节点,这正好契合DFS“先探到底、再回溯”的核心逻辑,属于无递归的DFS实现。

举个二叉树的直观例子:
假设树结构如下:

1
   / \
  2   3
 / \
4   5
  • 队列实现的BFS遍历顺序:1 → 2 → 3 → 4 → 5(严格按层级遍历)
  • 栈替代队列时,若按「先左子节点、后右子节点」的顺序压入子节点,遍历顺序为1 → 3 → 2 → 5 → 4(反向先序DFS);若按「先右子节点、后左子节点」的顺序压入,遍历顺序则为1 → 2 → 4 → 5 → 3(标准先序DFS)

无论子节点的压入顺序如何,核心都是优先深入分支而非按层级推进,因此这确实是无递归的DFS实现。

内容的提问来源于stack exchange,提问作者Shisui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:52:02