深度优先搜索(Depth First Search)是一种用于遍历或搜索树或图的算法。它采用递归的方式进行,从某个起始节点开始,尽可能深地搜索树的分支。
在应用DFS算法时,我们首先初始化一个访问状态数组来记录每个节点是否已被访问过。然后,选择一个起始节点作为搜索的起点,将其标记为已访问,并将其加入到路径栈中。接着,算法反复执行以下步骤:从路径栈顶的节点出发,检查其邻接节点中哪些尚未被访问过,若存在未访问的邻接节点,则将其标记为已访问,压入路径栈,并继续向下一个邻接节点搜索;若当前节点的所有邻接节点均已被访问或不存在未访问的邻接节点,则将路径栈顶节点弹出,回溯至上一个节点。重复上述过程,直到路径栈为空,此时已找到所有从起始节点可达的节点路径。下图为深度优先搜索算法的流程图:
