2025年12月15日/ 浏览 17
java
public class BFSAlgorithm {
public static void main(String[] args) {
// 初始化邻接表
List
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
adjList.add(new AdjacencyNode());
// 初始化队列
Queue<AdjacencyNode> queue = new LinkedList<>();
queue.add(startNode);
visited.add(startNode);
result.add(startNode);
while (!queue.isEmpty()) {
AdjacencyNode u = queue.removeFirst();
for (AdjacencyNode v : adjList.get(u)) {
if (!visited.contains(v)) {
visited.add(v);
queue.add(v);
result.add(v);
// 添加处理下一个节点
queue.add(v);
}
}
}
// 检查目标节点是否被访问过
if (!visited.contains(targetNode)) {
System.out.println("无路径");
return;
}
// 构造路径
String path = new StringBuilder();
Node current = targetNode;
while (current != null) {
path.append(current);
current = result.get(current);
}
System.out.println("最短路径为:" + path.reverse());
}
}
java
package com.example.example;
import java.util.*;
class AdjacencyNode {
public int id;
public List
public AdjacencyNode(int id) {
this.id = id;
}
}
class BFSAlgorithm {
public static void main(String[] args) {
// 初始化邻接表
List
adjList.add(new AdjacencyNode(1));
adjList.add(new AdjacencyNode(2));
adjList.add(new AdjacencyNode(3));
adjList.add(new AdjacencyNode(4));
adjList.add(new AdjacencyNode(5));
// 初始化队列
Queue<AdjacencyNode> queue = new LinkedList<>();
queue.add(1);
visited.add(1);
result.add(1);
// BFS循环
while (!queue.isEmpty()) {
AdjacencyNode u = queue.removeFirst();
for (AdjacencyNode v : adjList.get(u)) {
if (!visited.contains(v)) {
visited.add(v);
queue.add(v);
result.add(v);
}
}
}
// 检查目标节点是否被访问过
if (!visited.contains(5)) {
System.out.println("无路径");
return;
}
// 构造路径
String path = new StringBuilder();
Node current = 5;
while (current != null) {
path.append(current);
current = result.get(current);
}
System.out.println("最短路径为:" + path.reverse());
}
}
Java中的BFS算法实现最短路径,需要选择邻接表作为数据结构,使用队列来遍历所有节点。代码实现需要维护队列和标记访问的节点,记录路径,最后检查目标节点是否被访问过。通过代码示例,可以清晰地看到BFS算法的实现细节,确保算法的正确性和高效性。