Java 邻接表遍历图
时间: 2023-11-05 14:01:30 浏览: 85
邻接表存储的图的遍历
Java 邻接表遍历图可以使用深度优先搜索和广度优先搜索两种算法。
深度优先搜索:
1. 从起点开始遍历,将起点标记为已访问。
2. 遍历当前节点的邻接节点,如果邻接节点未被访问,则递归遍历该节点。
3. 重复步骤2,直到所有节点都被访问。
Java 代码实现:
```
public void dfs(int v, boolean[] visited, LinkedList<Integer>[] adjList) {
visited[v] = true;
System.out.print(v + " ");
for (int i = 0; i < adjList[v].size(); i++) {
int n = adjList[v].get(i);
if (!visited[n]) {
dfs(n, visited, adjList);
}
}
}
```
广度优先搜索:
1. 从起点开始遍历,将起点加入队列。
2. 取出队列头部节点,遍历该节点的邻接节点,将未被访问的邻接节点加入队列。
3. 重复步骤2,直到队列为空。
Java 代码实现:
```
public void bfs(int start, boolean[] visited, LinkedList<Integer>[] adjList) {
LinkedList<Integer> queue = new LinkedList<Integer>();
visited[start] = true;
queue.add(start);
while (!queue.isEmpty()) {
int v = queue.poll();
System.out.print(v + " ");
for (int i = 0; i < adjList[v].size(); i++) {
int n = adjList[v].get(i);
if (!visited[n]) {
visited[n] = true;
queue.add(n);
}
}
}
}
```
阅读全文