将图的 BFS 代码转换为 DFS 代码

Nar*_*P S 3 algorithm tree graph data-structures

如果这个问题听起来模棱两可,我很抱歉,但我在采访中被问到了这个问题。

为图/树中的 BFS 编写一个程序。

我使用队列编写了流行的代码。

现在他要求我通过修改我刚刚编写的 BFS 代码的一行来将其转换为 DFS 代码。

我能想到的唯一答案是使用堆栈进行 DFS。然后我使用 2 个队列实现了堆栈。

所以最后我的答案是:使用1个队列进行BFS。对于 DFS,请改用 2 个队列。

他没有给我任何反馈。没有被录用:(

我的方法好还是有更好的方法?请帮忙。:)

Sco*_*ter 5

我假设您的 BFS 答案将继续从队列(先进先出数据结构)中删除节点,直到完成,并且对于删除/访问的每个节点,都会将该节点的子节点添加到队列中,因为您希望在所有节点之后访问这些节点到目前为止你已经发现的那些。

在 DFS 中,您希望在迄今为止保存的任何其他子项之前访问这些子项,因此您需要 LIFO 数据结构。

或者,正如 @joews 所说:将队列交换为堆栈。