DFS不支持2D阵列

时间:2014-03-19 02:13:46

标签: java arrays depth-first-search neighbours

所以我有一个2darray的颜色。颜色用数字表示。我做了一个目前只检查数字1的dfs,它是红色的。我不认为我的代码是正确的。我有一个得到的邻居确实得到它所在节点周围的邻居并将它们添加到列表中。这些板是int的数组,如果访问了节点,则访问者是一个真或假的数组。这是我的dfs:

private int dfs(int startRow, int startCol, int[][]boards, boolean[][] visitedd){
    int f;
    int t;
    visitedd[startRow][startCol] = true;
    for(; startRow < q; startRow++){
        for(; startCol < q; startCol++){
            if(boards[startRow][startCol] == 1 && visitedd[startRow][startCol] == false){
                g+=1;
                f = startRow;
                t = startCol;
                dfs(f, t, boards, visitedd);
            }
        }
    }
    return g;

我不确定如何使用get neighbor正确遍历下一个红色。

1 个答案:

答案 0 :(得分:1)

DFS中,您标记在您离开时探索的子节点。查看维基百科的这个Pseudocode:

procedure DFS(G,v):
  label v as discovered
  for all edges from v to w in G.adjacentEdges(v) do
    if vertex w is not labeled as discovered then
      recursively call DFS(G,w)

请注意,您不会检查父母是否被访问过。你检查孩子们。