用java写一个深度优先遍历图算法
时间: 2023-03-02 19:06:40 浏览: 111
深度优先遍历(Depth-First Search, DFS)是一种常用的图遍历算法,下面是使用Java语言实现的伪代码:
```
public void dfs(int node, boolean[] visited, Map<Integer, List<Integer>> graph) {
// 标记当前节点已经被访问
visited[node] = true;
// 处理当前节点
System.out.print(node + " ");
// 遍历当前节点的所有邻居节点
for (int neighbor : graph.get(node)) {
// 如果邻居节点没有被访问过,则递归访问它
if (!visited[neighbor]) {
dfs(neighbor, visited, graph);
}
}
}
// 使用深度优先遍历遍历整张图
public void dfsTraversal(Map<Integer, List<Integer>> graph) {
boolean[] visited = new boolean[graph.size()];
// 从每个未被访问过的节点开始遍历
for (int node : graph.keySet()) {
if (!visited[node]) {
dfs(node, visited, graph);
}
}
}
```
其中,`dfs`方法是一个递归方法,用于从当前节点开始进行深度优先遍历。`visited`数组用于标记每个节点是否已经被访问过,`graph`参数是一个邻接表,表示整张图。`dfsTraversal`方法则是使用深度优先遍历遍历整张图,其中使用一个循环遍历每个未被访问过的节点,并调用`dfs`方法进行遍历。
阅读全文