public void traverse(Pair source, int color, Range rowrange, Range colrange) { LinkedList<Pair> stack = new LinkedList<Pair>(); stack.add(source); while (!stack.isEmpty()) { Pair w = stack.removeLast(); for (Pair neighbor : graph.getNeighbors(w, rowrange, colrange)) { graph.process(w, neighbor, color); stack.addLast(neighbor); } } }