バイナリ検索ツリーで挿入と印刷を実装するとします。最初のルートノードのみが出力されます。なぜ助けてください?バイナリ検索ツリーの基本的な実装。学習に始まり、より高度なものに移行しますが、最初のステップでは迷ってしまいます。ルートノードにノードを追加していないようです。バイナリ検索ツリーに挿入することができません
class bstrees{
class Node
{
int data;
Node left;
Node right;
public Node(int data)
{
this.data=data;
this.left=null;
this.right=null;
}
}
Node root;
bstrees(){root=null;}
public void insert(int data){
root=insert_node(root,data);
}
public Node insert_node(Node r,int n){
if(r==null){
Node n1=new Node(n);
//root=n1;
return n1 ;
}
else if(root.data<=n){
insert_node(root.right,n);
}
else{
insert_node(root.left,n);
}
return r;
}
public void print_t(){
print_t(root);
}
private void print_t(Node r){
//System.out.println(r);
if(r!=null){
// System.out.println(r.left);
// System.out.println(r.right);
print_t(r.left);
System.out.println(r.data+" ");
print_t(r.right);
}
}
}
public class BST_prac {
public static void main(String[] args) {
// TODO Auto-generated method stub
bstrees b1=new bstrees();
b1.insert(5);
b1.insert(1);
b1.print_t();
}
}
それだけ5
最初に一見/テストコードではないようですが、最初にnullをチェックしたいと思うかもしれません。[こちら](http://stackoverflow.com/questions/5560679/inserting-nodes-into-a) -binary-tree-in-java-question) –
Java命名規則についてお読みください。クラス名は大文字で始まります。省略しないでください(BinaryTreeはbstreeよりもはるかに理解しやすい)、SOME_CONSTANTSでは_charのみを使用しますが、変数やメソッド名では使用しません。 – GhostCat
そして、次の質問:私たちが時間を費やしてあなたを助けてくれるようにしたいので、ソースコードを適切にフォーマットする時間を費やしてください。最後に、**挿入することに関する** 2つの**公開メソッドを持つことは、(私が間違った答えを最初に与えたように見たように)単純には非常に混乱しやすいインターフェースです。あなたのコードは**読みにくいです**。それはとても簡単ではありません。最後に、関連するアクションの後にコードにprintステートメントを置くだけで、簡単に**デバッグできます。または**デバッガ**を実行してください。 – GhostCat