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