我一直试图将Graph的DFS搜索作为我项目的一部分来实现,但我一直在努力弄清楚递归是如何工作的......我认为我的代码是正确的,但结果显示不然。
public void RecursionHelper(HashSet seen2, int startVertex2, LinkedStack components2, boolean[] alert2){
seen2.add(startVertex2);
for(int i = 0; i < matrix.get(startVertex2).size() ; i++){
boolean b = helper(matrix.get(startVertex2), i);
if(matrix.get(startVertex2).get(i) !=0 && !seen2.contains(i)){
int p = i;
RecursionHelper(seen2, i , components2, alert2);
if(b = true && alert2[startVertex2] == false){
components2.push(startVertex2);
alert2[startVertex2]= true;
}
}
else if(b = true && alert2[startVertex2] == false){
components2.push(startVertex2);
alert2[startVertex2]= true;
}
}
}
这是我的帮助器方法,用于告知当前索引是否是ArrayList中最后一个索引
public boolean helper(ArrayList<Integer> k, int o){
boolean last = false;
int capture = 0; //the index of the last connection in the arraylist
if(k.size() == 1){
return true;
}
for(int i = k.size() -1 ; i > 0; i--){
if(k.get(i) == 1){
capture = i;
}
}
if
( o == capture){
last = true;
}
return last;
}
矩阵是一个2D arraylist,我用它作为邻接矩阵来显示图形。