我正在查看常规图表的non-recursive DFS和BFS。除了前者使用堆栈而不是队列这一事实之外,唯一的区别是它“延迟检查是否已经发现顶点,直到从堆栈弹出顶点而不是在推顶点之前进行此检查。”为什么这个“访问过”的支票订单有所不同?换句话说,我们可以通过简单地用BFS替换BFS中的队列来将BFS更改为非递归DFS吗?
答案 0 :(得分:0)
是的,这是唯一的区别。
你从维基百科展示的DFS算法中有一个错误(好吧,至少是一个严重的低效率) - 它将重新插入已经被访问过的S个节点。 BFS设计更合理,您可以将其更改为堆叠。