Flood füllen mit einem Stapel

Ich verwende den rekursiven Flood-Fill-Algorithmus in Java, um einige Bereiche eines Bildes zu füllen. Bei sehr kleinen Images funktioniert es einwandfrei, aber wenn das Image größer wird, gibt mir die JVM einen Stack Over Flow-Fehler.

Das ist der Grund, warum ich die Methode mit einer Überflutungsfüllung mit meinem eigenen Stapel neu implementieren muss. (Ich habe gelesen, dass dies in solchen Fällen der beste Weg ist.)

Kann mir jemand erklären, wie man es codiert? (Wenn Sie den Code nicht zur Hand haben, mit dem Pseudo-Code des Algorithmus wird in Ordnung sein)

Ich habe viel im Internet gelesen, aber ich habe es nicht sehr gut verstanden.

EDIT: Ich habe meinen rekursiven Code hinzugefügt

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;

}

Vielen Dank

Antworten auf die Frage(8)

Ihre Antwort auf die Frage