これは宿題のためのものです。私は信じられないほど、このadd()関数を動作させるために必要なことについて混乱しています。わかりにくい部分は、左と右の子をタイプBinaryTree
として定義する必要があり、add()関数はNode
ではなくString
になります。これはこのサイトのすべての例でわかります。文字列をBinaryTree型の新しい子に設定する方法がわかりません。Java - この再帰的なバイナリツリーについて非常に混乱しています
任意のヘルプ&ガイダンスが評価されます。
import java.util.*;
public class BinaryTree {
private String data;
private BinaryTree leftChild;
private BinaryTree rightChild;
public BinaryTree() {
data = null;
leftChild = null;
rightChild = null;
}
public BinaryTree(String d) {
data = d;
leftChild = null;
rightChild = null;
}
public BinaryTree(String d, BinaryTree left, BinaryTree right) {
data = d;
leftChild = left;
rightChild = right;
}
public String getData() { return data; }
public BinaryTree getLeftChild() { return leftChild; }
public BinaryTree getRightChild() { return rightChild; }
public void setData(String d) { data = d; }
public void setLeftChild(BinaryTree left) { leftChild = left; }
public void setRightChild(BinaryTree right) { rightChild = right; }
public String root;
//This function is what I'm stuggling with
public void add(String item){
if(root==null)
{
root = item;
}
else
{
String tmp = root; // save the current root
if(root.compareTo(item)>0)
{
setData(item);
add(item); //I should have setBinaryTree(item) here, but I can't convert type String to BinaryTree?.
}
else if(root.compareTo(item)<0)
{
setData(item);
add(item);
}
root = tmp; // put the root back to its original value
}
return;
}
}