我该如何记住深度优先搜索和广度优先搜索使用哪些数据结构?

49

我经常混淆DFS或BFS使用堆栈(stack)还是队列(queue)。请问有人可以提供一些直觉来记住哪种算法使用哪种数据结构吗?

16个回答

1

如果你将“q”符号(如队列中的“q”)逆时针旋转180度,你会得到一个“b”(如BFS中的“b”)。

否则这是堆栈和深度优先搜索。


目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

1

记忆起来更容易的方法,特别是对于年轻的学生,是使用类似的缩写:

BFS => 排队的男朋友们(显然是为了受欢迎的女士们)。

DFS 则相反(栈)。


1
  1. 堆栈(后进先出,LIFO)。对于 DFS,我们尽可能从根节点到最远的节点检索它,这与 LIFO 的思想相同。

  2. 队列(先进先出,FIFO)。对于 BFS,我们逐层检索它,先访问节点的上一级,然后再访问节点的下一级,这与 FIFO 的思想相同。


0

你可以通过缩略词来记忆

BQDS

美丽的女王犯了罪。

在印地语中, हुरानी क्यु र्द हा


3
抱歉,但这个建议并不是非常有用。我想你要找的词是“记忆法”。首字母缩略语本身必须是易记的。 - pscl
@pscl,根据您的建议添加了助记符。 - Yogesh Sanchihar

0

0
这里有一个简单的比喻可以记住。在BFS中,您一次只走一层,但在DFS中,您会尽可能深地向左移动,然后再访问其他节点。基本上是堆叠大量的东西,然后逐个分析它们,所以如果这是STACK,则另一个是queue。
记住“堆积”,“堆叠”,越多越好(DFS)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接