深度优先搜索和广度优先搜索是两种常见的图遍历算法,其中深度优先搜索是以深度为优先级的搜索,而广度优先搜索是以广度为优先级的搜索。下面将分别介绍它们的java代码实现过程。
深度优先搜索的java代码实现过程:
import java.util.*;
public void dfs(int v, boolean[] visited, List<List<Integer>> adjList) {
visited[v] = true;
System.out.print(v + " ");
List<Integer> neighbors = adjList.get(v);
for (int neighbor : neighbors) {
if (!visited[neighbor]) {
dfs(neighbor, visited, adjList);
}
}
}其中v表示当前搜索的节点,visited表示用于标记是否已经被搜索过的数组,adjList是邻接表表示的图,用List<List<Integer>>表示。
广度优先搜索的java代码实现过程:
import java.util.*;
public void bfs(int start, boolean[] visited, List<List<Integer>> adjList) {
Queue<Integer> queue = new LinkedList<>();
visited[start] = true;
queue.add(start);
while (!queue.isEmpty()) {
int v = queue.poll();
System.out.print(v + " ");
List<Integer> neighbors = adjList.get(v);
for (int neighbor : neighbors) {
if (!visited[neighbor]) {
visited[neighbor] = true;
queue.add(neighbor);
}
}
}
}其中start表示搜索的起始节点,visited和adjList的含义与深度优先搜索相同,Queue用于存储待搜索的节点队列。
本文详细讲解了深度优先搜索和广度优先搜索两种图遍历算法在Java中的实现。深度优先搜索利用visited数组记录已搜索节点,通过邻接表adjList进行遍历;广度优先搜索则借助Queue作为待搜索节点的队列,从起始节点start开始遍历。
4523

被折叠的 条评论
为什么被折叠?



