📅  最后修改于: 2020-10-15 01:08:16             🧑  作者: Mango
深度优先搜索(DFS)算法从图G的初始节点开始,然后逐渐深入,直到找到目标节点或没有子节点的节点。然后,该算法从死角回溯到尚未完全开发的最新节点。
DFS中使用的数据结构是堆栈。该过程类似于BFS算法。在DFS中,导致未访问节点的边缘称为发现边缘,而导致已访问节点的边缘称为块边缘。
考虑图G及其邻接表,如下图所示。通过使用深度优先搜索(DFS)算法,计算从节点H开始print图形的所有节点的顺序。
将H推入堆栈
STACK : H
弹出堆栈的顶部元素(即H),将其print出来并将H的所有邻居压入就绪状态的堆栈。
Print H
STACK : A
弹出堆栈(即A)的顶部元素,进行print,然后将A的所有邻居推入处于就绪状态的堆栈。
Print A
Stack : B, D
弹出堆栈的顶部元素,即D,进行print,然后将D的所有邻居推入处于就绪状态的堆栈。
Print D
Stack : B, F
弹出堆栈的顶部元素,即F,进行print,然后将F的所有邻居推入处于就绪状态的堆栈。
Print F
Stack : B
弹出栈顶,即B并推入所有邻居
Print B
Stack : C
弹出栈顶,即C并推入所有邻居。
Print C
Stack : E, G
弹出堆栈的顶部,即G并推入所有邻居。
Print G
Stack : E
弹出栈顶,即E并推入所有邻居。
Print E
Stack :
因此,堆栈现在变为空,并且遍历了图的所有节点。
图形的打印顺序为:
H → A → D → F → B → C → G → E