何日も問題に苦しんでいて、適切な解決策が見つからなかったため、あなたの助けを求める必要があります. ノード (私のメソッドのパラメーターになる) を含み、中央ノード 0 で終わる subgrah の重みを見つけたいと思います。ばかげているように聞こえますが、ここでは画像が非常に役立ちます ( http://img542.imageshack. us/img542/5400/zrzutekranu20130418o205.png )。たとえば、getWeight(8) は 21 を返します。これは、getWeight(7) (9,10) を実行した場合と同じです。getWeight(2) = 7.私はそのようなメソッドを書きましたが、スタックオーバーフロー例外が発生することがあります:(
private void getWeight(Object node, Object source) {
Collection nodeCollection = graph.getNeighbors(node);
for (Object n : nodeCollection) {
if ((Integer) n == 0) {
weight += ((MyEdge) (graph.findEdge(startNode, node))).getW();
} else {
if (n != source) {
weight += ((MyEdge) (graph.findEdge(node, n))).getW();
getWeight(n, node);
} else {
}
}
}
return weight;
}
私はjung2 libを使用しています。
助けてください、あなたは私の最後の希望です!
@Zim-Zam O'Pootertoot: こんな感じ?
ArrayList<Boolean> visited = new ArrayList<Boolean>();
public void getWeight2(Object i) {
visited.set((Integer) i, true);
for (Object v : getGraph().getNeighbors(i)) {
if (!visited.get((Integer) v)) {
if (getGraph().getNeighborCount(v) > 1 & !v.equals(startNode)) {
weight += ((MyEdge) getGraph().findEdge(i, v)).getW();
getWeight2(v);
} else {
weight += ((MyEdge) getGraph().findEdge(i, v)).getW();
}
}
}
}
まだSOExp ;(