私は自分の二分木をコード化しようとしています。二分探索木の例はたくさんありましたが、自分で書くことにしました。
これまでのところ、私はこれに行き着きました:
public class bTree {
bnode root=null;
void add(int val){
bnode newnode= new bnode(val);
bnode curr = this.root;
bnode parent = null;
if(this.root == null){
this.root = newnode;
System.out.println("Inserted at root \t"+newnode.value);
}
else{
while( curr != null){
System.out.println("Current Left and Right\t"+curr.left+"\t"+curr.right);
if(curr.left == null){
curr = curr.left;
curr = newnode;
System.out.println("Inserted Left\t" +newnode.value);
return;
}
if(curr.right == null){
curr = curr.right;
curr = newnode;
System.out.println("Inserted Right\t" +newnode.value);
return;
}
}
}
}
二分木に値を追加しようとすると、ルートだけが値を追加できます。私はゆっくりと残りのコードを書き込もうとしています。ここでは、左の子がいっぱいであることがわかり、バックトラックとすべてのケースがあります。私の質問は、左端の子に次の値を追加することさえできないのはなぜですか(2回目の呼び出しで)。コードを教えていただければ幸いです。私は学びたいのです。