برای نوشتن FloodFill کافی هست که الگوریتم DFS رو انجام بدید و زمانی که از یک پیکسل عبور می کنید رنگ اون پیکسل رو عوض کنید . و در صورتی که به پیکسلی که قبلا رنگ آمیزی شده بود یا رنگ غیر مشابه داشت رسیدید DFS رو متوقف کنید .
شبه کد :
int xdir=[0,0,1,-1]
int ydir=[1,-1,0,0]
FloodFill (pixel, req-color, replace-color):
//agar be rang motefavet residim ya az ghabl rang shode bood
If pixel.color != req-color Or pixel.colored
return.
pixel.color=replace-color
pixel.colored=true
for i=0 to 4
FloodFill (Pixel(pixel.x+xdir[i],pixel.y+ydir[i],req-color, replace-color).
البته میتونید ازروش غیر بازگشتی الگوریتم dfs هم با استفاده از صف استفاده کنید که داخل پاسخ بالا و همین طور این لینک توضیح داده شده .
برای شکل بالا هم یا می تونید یک بار FloodFill رو از وسط آرایه با رنگ سیاه انجام بدید
یا یک آرایه Colors رو بترتیب رنگ سفید و سیاه و سیاه بزارید و از گوشه بالا یک بار FloodFill رو به ازای همه ی پیکسل ها و با رنگ های داخل آرایه انجام بدید.