package search.depthfirstsearch; import search.Node; import java.util.ArrayList; import java.util.List; public class DepthFirstSearch { public Node depthFirstSearch(Node node, Node target) { if (node.isTargetReached(target)) { return node; } var newNodes = node.generateSuccessors(); while (!newNodes.isEmpty()) { var resultNode = depthFirstSearch(newNodes.get(0), target); if (resultNode != null) { return resultNode; } newNodes.remove(0); } return null; } }