0
バイナリ検索したいが、プログラムは無限ループに入っている。 プログラムプリント:無限ループに入るバイナリ検索
値= 10
値= 10
値=私はこの問題を解決するにはどうすればよい10
...
?
public static void search(Node root, int data){
while(root.data != data){
if(data < root.data){
search(root.left, data);
}
else if(data > root.data){
search(root.right, data);
}
}
System.out.println("Value = " + root.data);
}
public static void main(String[] args) {
Node root = null;
root = add(root, 15);
root = add(root, 3);
root = add(root, 10);
root = add(root, 20);
root = add(root, 30);
search(root, 10);
}
Nodeクラス:
class Node {
Node left;
int data;
Node right;
Node(int data) {
left = null;
this.data = data;
right = null;
}
}
Nodeクラスとadd関数も投稿できますか? –
質問を編集して[mcve](http://stackoverflow.com/help/mcve)を追加してください。何が起こると予想され、実際に何が起こったのかを説明してください。現在、私はあなたが再帰と反復のソリューションを同時に使用しようとしていると推測できます。再帰のために、あなたは破壊条件を逃しています。反復解法の場合、while条件がfalseになるようにいくつかの変数を再割り当てする必要があります。 –
クラスNode { ノードが残っています。 intデータ。 ノード権利。 ノード(intデータ){ left = null; this.data = data; right = null; } } – myvalley