Я использую рекурсивный алгоритм заливки Flood в Java для заполнения некоторых областей изображения. С очень маленькими изображениями он работает нормально, но когда изображение становится больше, JVM выдает мне ошибку Stack Over Flow.
Вот почему я должен переопределить метод, используя Flood Fill с моим собственным стеком. (Я читал, что это лучший способ сделать это в таких случаях)
Может ли кто-нибудь объяснить мне, как его кодировать? (если у вас нет кода под рукой, с псевдокодом алгоритма все будет в порядке)
Я много читал в Интернете, но я не очень хорошо это понял.
РЕДАКТИРОВАТЬ: я добавил свой рекурсивный код
public void floodFill(int x, int y, Color targetColor,Color replacementColor) {
if (img.getRGB(x, y) != targetColor.getRGB()) return;
img.setRGB(x, y, replacementColor.getRGB());
floodFill(x - 1, y, targetColor, replacementColor);
floodFill(x + 1, y, targetColor, replacementColor);
floodFill(x, y - 1, targetColor, replacementColor);
floodFill(x, y + 1, targetColor, replacementColor);
return;
}
Спасибо!