我正在查看一般图的非恢复DFS和BFS。除了前者使用堆栈而不是队列的事实外,唯一的区别是,它"延迟检查是否已经发现了顶点,直到顶点从堆栈中弹出,而不是在推动顶点之前进行检查。"为什么此"访问"检查订单不同?或换句话说,我们可以通过简单地用堆栈中的BF中的队列更改BFS?
我检查了我能找到的所有帖子,但没有一个澄清这个问题。
是的,这是唯一的区别。
您从Wikipedia展示的DFS算法中有一个错误(嗯,至少是严重的效率低下) - 它将重新插入已经访问过的S节点。BFS的设计更明智,您可以将其更改为具有堆栈。