Java 广度优先搜索以查找路径
我在图中进行广度优先搜索。 这是生成bfs的算法,但我需要将nodeStart和nodeToFund之间的路径存储在传递给该方法的“路径”列表中,但我不知道如何存储。 我做了一些测试,但没人能工作Java 广度优先搜索以查找路径,java,search,graph,Java,Search,Graph,我在图中进行广度优先搜索。 这是生成bfs的算法,但我需要将nodeStart和nodeToFund之间的路径存储在传递给该方法的“路径”列表中,但我不知道如何存储。 我做了一些测试,但没人能工作 public void BFS(Node nodeStart, ArrayList<Integer> path, Node nodeToFind) { if (nodeStart.getVal() == nodeToFind.getVal()) {
public void BFS(Node nodeStart, ArrayList<Integer> path, Node nodeToFind) {
if (nodeStart.getVal() == nodeToFind.getVal()) {
return;
}
List<Integer> visited = new ArrayList<>();
LinkedList<Integer> queue = new LinkedList();
visited.add(nodeStart.getVal());
queue.add(nodeStart.getVal());
while (queue.size() != 0) {
nodeStart = nodeMap.get(queue.poll());
List<Integer> list = nodeStart.getAdjacenets();
for (int j = 0; j < list.size(); j++) {
if (j + 1 < list.size() && !visited.contains(list.get(j + 1))) {
visited.add(list.get(j + 1));
queue.add(list.get(j + 1));
}
}
}
}
public void BFS(节点nodeStart、ArrayList path、节点nodeToFind){
if(nodeStart.getVal()==nodeToFind.getVal()){
返回;
}
访问列表=新建ArrayList();
LinkedList队列=新建LinkedList();
add(nodeStart.getVal());
add(nodeStart.getVal());
while(queue.size()!=0){
nodeStart=nodeMap.get(queue.poll());
List=nodeStart.getAdjacenets();
对于(int j=0;j