0
私が構築したツリーの値を検索する関数を記述しようとしていますが、うまく動作する再帰関数を記述しました。今は実行時間を改善したいので、値を探すためにwhileループを使いたいと思います。問題は私がNullPointerException
を得ていることです。私は検索を実行する前にすべての値を印刷するので、ツリーが大丈夫であることを確かに知っています。だから私のコードの問題は何ですか?今Whileループでバイナリツリーを検索する
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);
}
}
、inOrderTraverse
方法は、すべての値を出力しますので、私は木がOKであることを知っています。何が問題なの?ありがとうございました! root
がnullのとき