用 java 写DFS代码要求递归
时间: 2024-02-27 09:51:47 浏览: 69
好的,以下是用 Java 实现 DFS(深度优先搜索)的递归代码:
```
import java.util.*;
public class DFS {
public static void main(String[] args) {
// 定义一个有向图
Map<Integer, List<Integer>> graph = new HashMap<>();
graph.put(0, Arrays.asList(1, 2));
graph.put(1, Arrays.asList(3));
graph.put(2, Arrays.asList(3, 4));
graph.put(3, Arrays.asList(5));
graph.put(4, Arrays.asList(5));
graph.put(5, new ArrayList<>());
// 记录已经访问的节点
Set<Integer> visited = new HashSet<>();
// 从节点 0 开始遍历
dfs(0, graph, visited);
}
public static void dfs(int node, Map<Integer, List<Integer>> graph, Set<Integer> visited) {
// 如果当前节点已经被访问过,则直接返回
if (visited.contains(node)) {
return;
}
// 标记当前节点已经被访问
visited.add(node);
// 输出当前节点的值
System.out.println(node);
// 遍历当前节点的所有邻居节点
List<Integer> neighbors = graph.get(node);
for (int neighbor : neighbors) {
dfs(neighbor, graph, visited);
}
}
}
```
这段代码使用了递归的方式进行 DFS 遍历。首先定义了一个有向图,然后从节点 0 开始遍历。在遍历过程中,使用一个 Set 记录已经访问过的节点,防止重复遍历。然后遍历当前节点的所有邻居节点,对每个邻居节点递归调用 dfs 函数,直到遍历完整个图为止。
阅读全文