共计 853 个字符,预计需要花费 3 分钟才能阅读完成。
深度优先搜索(DFS)是一种用于遍历或搜索树或图的算法,其基本思想是从起始节点开始,沿着一条路径尽可能深地搜索,直到到达叶子节点或者无法继续搜索为止,然后回溯到上一个节点,选择另一条路径继续搜索。以下是一个简单的 Java 实现 DFS 算法的例子:
import java.util.List;
import java.util.Stack;
public class DFS {public void dfs(List<List<Integer>> graph, int start) {boolean[] visited = new boolean[graph.size()];
Stack<Integer> stack = new Stack<>();
stack.push(start);
while (!stack.isEmpty()) {int node = stack.pop();
if (!visited[node]) {System.out.print(node + " ");
visited[node] = true;
for (int neighbor : graph.get(node)) {if (!visited[neighbor]) {stack.push(neighbor);
}
}
}
}
}
public static void main(String[] args) {
List<List<Integer>> graph = List.of(List.of(1, 2),
List.of(0, 2, 3),
List.of(0, 1, 4),
List.of(1),
List.of(2)
);
DFS dfs = new DFS();
dfs.dfs(graph, 0);
}
}
在上面的例子中,我们首先创建了一个 boolean 数组用于记录节点是否被访问过,然后创建一个栈用于存储待访问的节点。在 DFS 方法中,从起始节点开始,不断地遍历邻居节点,并将未访问过的邻居节点加入栈中。当栈为空时,表示搜索完成。在 main 方法中,我们定义了一个简单的图,并调用 dfs 方法从节点 0 开始进行深度优先搜索。
丸趣 TV 网 – 提供最优质的资源集合!
正文完