I have a tree class that looks like:
Class Tree {
   Node root;
   Node curNode;
   public List<String> find(String value) {
      if (curNode == null) curNode = root;
        for (Node child : curNode.children) {
            if (found == false) {
                if (child.data.equals(value)) {
                    // if it finds it return the path to this node.
                }
                curNode = child;
                findDFS(value);
            }
        }
   }
class Node {
   List<Node> children;
   String data;
}
Where the tree root contains pointers to children nodes which point to other children etc etc. What I'm having problems with is once it finds the node, I need to return the the path to that node.
passing a list tracking the path, once find the node, exit the recursion and fill the path one by one.
    Boolean Search(Node node, String value, List<Node> track)
    {
        if (node == null) return false;
        if (node.data.equals(value))
        {
            track.add(node);
            return true;
        }
        for(Node child : node.children)
        {
            if (Search(child, value, track)
            {
                track.add(0, node);
                return true;
            }
        }
        return false;
    }
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With