private static void constructPath(SearchNode searchNode) { if (searchNode.getParent() == null) { // We're at the start node System.out.println("(i,j)=(" + searchNode.getxPos() + "," + searchNode.getyPos() + ")"); System.out.println("F cost: " + searchNode.getFscore()); System.out.println("G cost: " + searchNode.getgScore()); return; } constructPath(searchNode.getParent()); searchNode.getOperator().print(); System.out.println(); System.out.println("(i,j)=(" + searchNode.getxPos() + "," + searchNode.getyPos() + ")"); System.out.println("F cost: " + searchNode.getFscore()); System.out.println("G cost: " + searchNode.getgScore()); if (g.isGoal(searchNode.getGridState())) { System.out.println("\nFinal cost is: " + searchNode.getgScore()); } }