javabinary-treetreenode

How to search for a node in a binary tree and return it?


I'm trying to search for a node in a binary tree and return in case it's there, otherwise, return null. By the way, the node class has a method name() that return a string with it's name...What I have so far is:

private Node search(String name, Node node){

     if(node != null){
         if(node.name().equals(name)){
            return node;
         }

      else{
         search(name, node.left);
         search(name, node.right);
      }
    }
    return null;
}

Is this correct??


Solution

  • You need to make sure your recursive calls to search return if the result isn't null.

    Something like this should work...

    private Node search(String name, Node node){
        if(node != null){
            if(node.name().equals(name)){
               return node;
            } else {
                Node foundNode = search(name, node.left);
                if(foundNode == null) {
                    foundNode = search(name, node.right);
                }
                return foundNode;
             }
        } else {
            return null;
        }
    }