dfs在grid结构中进行,遍历起来比二叉树的遍历更加冗长复杂
相关问题 看leetcode岛屿问题 463 695 827 200等。
//grid DFS遍历框架
void dfs(int[][] grid,int r,int c)
{
//如果在grid中超出范围 则直接返回
if(!inArea(grid,r,c))
return;
//为了避免有重复循环遍历,则标记已经经过的grid
if(grid[r][c]!=1) return;
grid[r][c] = '2';
dfs(grid,r-1,c);
dfs(grid,r+1,c);
dfs(grid,r,c-1);
dfs(grid,r,c+1);
}
bool inArea(int[][] grid,int r,int c)
{
return 0 <= r && r <grid.size() && 0<=c && c <grid[0].size();
}