/** * Adds all nodes and edges reachable from this node to the subgraph. * Uses an explicit stack to avoid a large depth of recursion. * * @param node a node known to be in the subgraph */ private void addReachable(Node startNode) { Stack nodeStack = new Stack(); nodeStack.add(startNode); while (! nodeStack.empty()) { Node node = (Node) nodeStack.pop(); add(node, nodeStack); } }