请简要介绍深度优先搜索算法的时间复杂度和空间复杂度。
深度优先搜索算法(DFS)
深度优先搜索算法是一种用于遍历或搜索树或图的算法。它沿着树的深度尽可能远的搜索树的分支,直到这条路径上的所有节点都被访问过,然后返回到前一个节点。DFS 使用堆栈来实现,其时间复杂度和空间复杂度如下:
- 时间复杂度:
- 最坏情况下,时间复杂度为 O(V + E),其中 V 是顶点的数量,E 是边的数量。
- 最好情况下,时间复杂度为 O(V)。
- 空间复杂度:
- 最坏情况下,空间复杂度为 O(V),其中 V 是顶点的数量。
- 最好情况下,空间复杂度为 O(log(V))。
示例
public void dfs(int v, boolean[] visited, List<Integer>[] graph) {
visited[v] = true;
System.out.print(v + " ");
for (int u : graph[v]) {
if (!visited[u]) {
dfs(u, visited, graph);
}
}
}