1
我想返回图的两个顶点之间的最短路径。我写了一段代码来查找breadthFirstSearch,但我不知道如何修改它以使其返回最短路径。下面是我的广度FirstSearch函数带BFS的ShortestPath(BreadthFirstSearch)
private void breadthFirstSearch(T start,T end){
Queue<T> queue = new LinkedList<>();
Set<T> visited = new HashSet<>();
visited.add(start);
queue.add(start);
while(!queue.isEmpty()){
T v = queue.poll();
for(int i =0;i<this.keyToVertex.get(v).successors.size();i++){ if(visited.contains(this.keyToVertex.get(v).successors.get(i).key)){
continue;
}
visited.add(this.keyToVertex.get(v).successors.get(i).key);
queue.add(this.keyToVertex.get(v).successors.get(i).key);
}
}
}
那么我怎么修改它以返回最短路径。
帮助很大,非常感谢!为了将来的参考,我希望得到LinkedList中的最后一个元素,而不是第一个,因为我将它与端点进行比较。 – Hussein
@Hussein我想你是说我用'peek()'而不是'getLast()'。我的印象是'peek()'会返回最后一个(没有检查文档),显然这是错误的。现在更正,谢谢指出! – janos