Data Structures Algorithms 简明教程

Depth First Search (DFS) Algorithm

Depth First Search (DFS) Algorithm

深度优先搜索(DFS)算法是一种递归算法,用于搜索图或树数据结构的所有顶点。此算法以深入运动遍历图,并使用堆栈记住要获取下一个顶点以开始搜索,当在任何迭代中发生死锁时。

depth first traversal

正如上面给出的示例中,DFS 算法首先从 S 到 A 到 D 到 G 到 E 到 B,然后到 F,最后到 C。它采用以下规则。

  1. Rule 1 - 访问邻接的未访问顶点。将其标记为已访问。显示它。将其推入堆栈。

  2. Rule 2 - 如果未找到邻接顶点,则从堆栈弹出一个顶点。(它将弹出堆栈中所有没有邻接顶点的顶点。)

  3. Rule 3 - 重复规则 1 和规则 2,直到堆栈为空。

由于 C 没有任何未访问的邻接节点,因此我们将继续弹出堆栈,直到找到具有未访问邻接节点的节点。在这种情况下,没有,并且我们一直弹出,直到堆栈为空。

Example

下面是深度优先搜索 (DFS) 算法在各种编程语言中的实现 −

单击检查 C 实现 Depth First Search (BFS) Algorithm

Complexity of DFS Algorithm

Time Complexity

DFS 算法的时间复杂度表示为 O(V + E),其中 V 是节点数,E 是边数。

Space Complexity

DFS 算法的空间复杂度为 O(V)。