dfs模板
dfs出口,不满足条件就退出
操作
递归,接着进一步DFS
private void dfs(int[][] image, int i, int j, int oldColor, int newColor) {
int m = image.length, n = image[0].length;
// dfs出口,不满足条件就退出
if (i < 0 || i >= m || j < 0 || j >= n || image[i][j] != oldColor || image[i][j] == newColor) return;
// 操作
image[i][j] = newColor;
// 递归,接着进一步DFS
dfs(image, i-1, j, oldColor, newColor);
dfs(image, i+1, j, oldColor, newColor);
dfs(image, i, j-1, oldColor, newColor);
dfs(image, i, j+1, oldColor, newColor);
}
bfs模板
条件判断(边界判断,其他要求的判断)
创建队列
在队列中加入第一个满足条件的元素
while(队列不为空) {
取出队列头部元素
操作
根据头部元素,往队列中再次加入满足条件的元素
}
private int[][] bfs(int[][] image, int sr, int sc, int newColor) {
// 条件判断(边界判