我正在使用 Java 中的递归洪水填充算法来填充图像的某些区域。对于非常小的图像,它可以正常工作,但是当图像变大时,JVM 会给我一个堆栈溢出错误。
这就是为什么我必须使用带有我自己的堆栈的 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;
}
谢谢!