class Solution {
public:
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
int prevColor = image[sr][sc];
dfs(image, sr, sc, prevColor, newColor);
return image;
}
void dfs(vector<vector<int>>& image, int sr, int sc, int prevColor, int newColor){
if(sr<0 || sr>=image.size() || sc<0 || sc>=image[0].size()){
return;
}
if(image[sr][sc] != prevColor){
return;
}
if(image[sr][sc] == newColor){
return;
}
image[sr][sc] = newColor;
dfs(image,sr + 1, sc, prevColor, newColor);
dfs(image,sr - 1, sc, prevColor, newColor);
dfs(image,sr, sc + 1, prevColor, newColor);
dfs(image, sr, sc-1, prevColor, newColor);
}
};