我经常混淆DFS或BFS使用堆栈(stack)还是队列(queue)。请问有人可以提供一些直觉来记住哪种算法使用哪种数据结构吗?
我经常混淆DFS或BFS使用堆栈(stack)还是队列(queue)。请问有人可以提供一些直觉来记住哪种算法使用哪种数据结构吗?
如果你将“q”符号(如队列中的“q”)逆时针旋转180度,你会得到一个“b”(如BFS中的“b”)。
否则这是堆栈和深度优先搜索。
记忆起来更容易的方法,特别是对于年轻的学生,是使用类似的缩写:
BFS => 排队的男朋友们(显然是为了受欢迎的女士们)。
DFS 则相反(栈)。
堆栈(后进先出,LIFO)。对于 DFS,我们尽可能从根节点到最远的节点检索它,这与 LIFO 的思想相同。
队列(先进先出,FIFO)。对于 BFS,我们逐层检索它,先访问节点的上一级,然后再访问节点的下一级,这与 FIFO 的思想相同。
你可以通过缩略词来记忆
BQDS
美丽的女王犯了罪。
在印地语中, बहुरानी क्यु दर्द सहा