わかりましたので、現在、各ノードにオブジェクトへの参照、左の子への参照、右の子への参照 (全部で 3 つの変数) を含む二分探索木を作成しようとしています。左の子は常に親よりも小さくなければならず、右の子は常に親よりも大きくなければなりません。2 つのメソッドを作成する必要があります。1 つのメソッド ( contains()) は要素がツリー内にあるかどうかをチェックし、もう 1 つのメソッドは要素をツリー内の適切な場所に追加します。
BinarySearchTree クラスは次のとおりです。
public class BinarySearchTree extends BinaryTree {
public BinarySearchTree(TreeNode t){
super(t);
}
public boolean contains (Comparable obj){
if (this.myRoot != null){
return containshelper(obj, this.myRoot);
}
return false;
}
public static boolean containshelper(Comparable comp, TreeNode t){
boolean flag = true;
int x = comp.compareTo(t.myItem);
if (x < 0 && t.myLeft != null){
containshelper(comp,t.myLeft);
}
if (x > 0 && t.myRight != null){
containshelper(comp,t.myRight);
}
if (x == 0){
return true;
}
return false;
}
public void add(Comparable key) {
if (!this.contains(key)){
if (this.myRoot != null){
add(myRoot, key);
}
System.out.print("Getting Here ");
}
else {
System.out.print("Tree already contains item");
}
}
private static TreeNode add(TreeNode t, Comparable key) {
if (((Comparable) t.myItem).compareTo(key) < 0 && t.myLeft != null){
add(t.myLeft,key);
}
if(((Comparable) t.myItem).compareTo(key) > 0 && t.myRight != null ) {
add(t.myRight,key);
}
if (((Comparable) t.myItem).compareTo(key) < 0 && t.myLeft == null){
TreeNode q = new TreeNode(key);
t.myLeft = q;
}
if (((Comparable) t.myItem).compareTo(key) > 0 && t.myRight == null ){
TreeNode w = new TreeNode(key);
t.myRight = w;
}
return t;
}
}
次に、TreeNode クラス (BinaryTree に含まれる) を示します。
public static class TreeNode {
public Object myItem;
public TreeNode myLeft;
public TreeNode myRight;
public int size;
public TreeNode (Object obj) {
size = size(this);
myItem = obj;
myLeft = myRight = null;
}
public int size(TreeNode t) {
return(sizehelper(t));
}
private int sizehelper(TreeNode node) {
if (node == null){
return(0);
}
else {
return(size(node.myLeft) + 1 + size(node.myRight));
}
}
public TreeNode (Object obj, TreeNode left, TreeNode right) {
myItem = obj;
myLeft = left;
myRight = right;
}
}
}
私のcontains()メソッドが機能すると確信していますが、私の人生では、なぜadd()が機能しないのかわかりません。どんな助けでも大歓迎です。