我需要寻求您的帮助,因为我已经为我的问题苦苦挣扎了很多天,但没有找到任何合适的解决方案。我想找到包含节点(将成为我的方法的参数)的 subgrah 的权重,并将以中心节点 0 结束。我知道这听起来很愚蠢,但图像在这里会有很大的帮助(http://img542.imageshack。我们/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 ;(