1
這是我使用深度優先搜索來實現圖的可達()。它尋找從頂點1(v1)到另一個頂點(v2)的可能路徑 我得到了一些正確的結果,有些錯誤。我嘗試了儘可能多的方式進行調試,但我無法弄清楚哪裏出錯。任何幫助表示讚賞。謝謝java深度優先搜索
public boolean isReachable(V v1, V v2) {
Stack<V> path = new Stack<V>();
return isReachableHelper(v1, v2, path);
}
}
public boolean isReachableHelper(V v1, V v2, Stack<V> path){
path.push(v1);
v1.setVisited(true); //set the vertex as being visited
if (v1.vertex().equals(v2.vertex())){ //check whether vertex' values are equal
return true;
}
//loop through all vertex that are neighbors of v1
for (V neighbor : super.neighbors(v1)){
if (!neighbor.visited){ //if the neighbor is not visited before
return isReachableHelper(neighbor, v2, path); //recursive call
}
}
path.pop(); //no path was found
return false;
}
我只是寫了同樣的東西。 – Mikeb 2013-03-14 21:33:53
@Mikeb對不起! ^^;真的應該有一個指標,正在進行的答案...... – 2013-03-14 21:37:21
不,不管怎麼說,我喜歡你的解釋比我要去的地方更好。 – Mikeb 2013-03-14 21:38:22