0
私は単純なBSTを実装し、要素を順番に印刷しようとしています。私は誤った出力を得ていて、デバッガを実行しているようで、何がうまくいかないのか分からない。これは、add
とinorder
メソッドを使用したBSTの実装です。Javaでエラーが発生するBSTの実装
public class BST {
private Node root;
private class Node{
int data;
Node left;
Node right;
public Node(int data){
this.data = data;
}
}
public BST(int item){
root = new Node(item);
}
public void add(int item){
root = add(item, root);
}
private Node add(int item, Node curr){
if(curr == null){
curr = new Node(item);
return curr;
}
if(item < curr.data) curr.left = add(item, curr.left);
if(item > curr.data) curr.right = add(item, curr.left);
return curr;
}
public void inorder(){
inorder(root);
}
private void inorder(Node curr){
if(curr == null) return;
inorder(curr.left);
System.out.print(curr.data + " ");
inorder(curr.right);
}
これは呼び出し元のクライアントです。
public class Solution {
public static void main(String[] args) {
BST bst = new BST(12);
//bst.add(12);
bst.add(7);
bst.add(16);
bst.add(3);
bst.add(9);
bst.add(13);
bst.add(19);
bst.inorder();
//bst.printLevelByLevel();
}
}
これは私が得ている出力です。
3 19 7 3 19 12 3 19 7 3 19
Process finished with exit code 0
なぜ同じデータを複数回読み取っているのか分かりません。どんな助けもありがたい。
'if(item> curr.data)'の行にあなたのタイプミスを確認してください。 –
これは、残念です。 – Clockwork
信じ難い、私の頭の中でデバッガに頭を叩いています。ありがとう、トン。 – Clockwork