记住DFS的两个要点:递归+安全带;
而BFS没有这些,而是借助一个stack数组。
1.DFS
var numIslands = function(grid) {
var m=grid.length;
if(m===0) return 0;
var n=grid[0].length;
var count=0;
for(var i=0;i<m;i++){
for(var j=0;j<n;j++){
if(grid[i][j]==='1'){
dfs(i,j);
count++;
}
}
}
return count;
function dfs(i,j){
if(i=m||j=n||grid[i][j]==='0') return;
grid[i][j]='0';
dfs(i-1,j);
dfs(i+1,j);
dfs(i,j-1);
dfs(i,j+1);
}
};
2.BFS
var numIslands = function(grid) {
var m=grid.length;
if(m===0) return 0;
var n=grid[0].length;
var count=0;
for(var i=0;i<m;i++){
for(var j=0;j=0&&x=0&&y<n&&grid[x][y]==='1'){
grid[x][y]='0';
stack.push([x-1,y],[x+1,y],[x,y-1],[x,y+1]);
}
}
}
};
作者:小小布丁--pudding