Я использую рекурсивный алгоритм заполнения Flood в Java, чтобы заполнить некоторые области изображения. С очень маленькими изображениями он работает нормально, но когда изображение становится больше, JVM дает мне ошибку стека над потоком.
Вот почему я должен переопределить метод с помощью Flood Fill своим собственным стеком. (Я читал, что лучший способ сделать это в подобных случаях)
Может ли кто-нибудь объяснить мне, как его кодировать? (если у вас нет кода под рукой, с псевдокодом алгоритма будет хорошо)
Я много читал в Интернете, но я не очень хорошо это понял.
EDIT: я добавил свой рекурсивный код
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;
}
Спасибо!