Ich versuche eine Funktion zu schreiben, die nach einem Wert auf einem Baum sucht, den ich erstellt habe, ich habe eine rekursive Funktion geschrieben, die gut funktioniert. Jetzt möchte ich meine Laufzeit verbessern, also möchte ich mit der while-Schleife nach dem Wert suchen. Das Problem ist, dass ich NullPointerException
bekomme. Ich weiß sicher, dass der Baum in Ordnung ist, denn bevor ich die Suche durchführe, drucke ich alle Werte aus. Also, was ist das Problem mit meinem Code?Binärbaum mit einer While-Schleife suchen
public void SearchByLoop(Node root,final int val){
while(root != null || root.getVal() == val){
if(root.getVal() < val)
root = root.getRightChild();
else if(root.getVal() > val)
root = root.getLeftChild();
}
if(root == null)
System.out.println("Couldn't find value " + val);
else if(root.getVal() == val)
System.out.println("Found value " + val);
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Tree theTree = new Tree();
Random rand = new Random();//Create random variable.
int val = 0;
for(int i = 0 ; i < 100; i ++){
val = rand.nextInt(151) + (0);
theTree.addNode(val,"a");
}
theTree.inOrderTraverseTree(theTree.getRoot());
theTree.SearchByLoop(theTree.getRoot(), 10);
}
}
Nun werden die inOrderTraverse
Methode druckt alle der Werte, so weiß ich, dass der Baum in Ordnung ist. Was kann das Problem sein? Vielen Dank!