非递归DFS与BFS,只有堆栈与队列不同?

时间:2015-05-06 21:21:59

标签: depth-first-search breadth-first-search non-recursive

我正在查看常规图表的non-recursive DFSBFS。除了前者使用堆栈而不是队列这一事实之外,唯一的区别是它“延迟检查是否已经发现顶点,直到从堆栈弹出顶点而不是在推顶点之前进行此检查。”为什么这个“访问过”的支票订单有所不同?换句话说,我们可以通过简单地用BFS替换BFS中的队列来将BFS更改为非递归DFS吗?

我查看了我能找到的所有帖子,例如thisthis,但没有人澄清这个问题。

1 个答案:

答案 0 :(得分:0)

是的,这是唯一的区别。

你从维基百科展示的DFS算法中有一个错误(好吧,至少是一个严重的低效率) - 它将重新插入已经被访问过的S个节点。 BFS设计更合理,您可以将其更改为堆叠。