2017-04-08 1 views
1

Ich weiß nicht, warum ich Null in meiner Methode bekomme?Warum gibt es Null in meinem binären Suchbaum, Suchmethode

public Node<E> search(int data, Node<E> start){ 
    Node<E> foundNode = null; 

    if(data < start.getData()){ 
     search(data, start.getLeftNode()); 
    } 

    if(data > start.getData()){ 
     search(data, start.getRightNode()); 
    } 

    if(data == start.getData()){ 
     foundNode = start; 
    } 

    return foundNode; 

} 

wenn ich System.out.println(foundNode); vor der return-Anweisung habe ich den Knoten zu bekommen, aber wenn es sie gibt Inull bekommen !!

Antwort

0

Sie sind für die rekursive Funktion die Rückgabe Aussagen fehlen Anrufe: search(data,start.getLeftNode()); und search(data, start.getRightNode());

würde Ihre Methode funktioniert nur, wenn es keine rekursiven Aufrufe ausgeführt sind und wenn sie werden immer noch foundNode ausgeführt, die zurückgegeben wird bleibt NULL, da es eine lokale Variable ist.

So richtige Code ist:

public Node<E> search(int data, Node<E> start){ 
Node<E> foundNode = null; 

if(data < start.getData()){ 
    return search(data, start.getLeftNode()); 
} 

if(data > start.getData()){ 
    return search(data, start.getRightNode()); 
} 

if(data == start.getData()){ 
    foundNode = start; 
} 
return foundNode; 

}

+0

Ich weiß nicht, wie habe ich es verpasst, Danke. –

0

Hier ist meine Methode:

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; 
    } 
} 
Verwandte Themen