Я упомянул, что это для домашней работы. Я невероятно смущен тем, что мне нужно сделать, чтобы заставить эту функцию add() работать. Сбивая с толку часть состоит в том, что мы должны определить левый и правый дочерние элементы как тип BinaryTree
, и иметь функцию add() принять String
, а не Node
, что я вижу в каждом примере на этом сайте. Я не могу понять, как установить строку для нового дочернего элемента, который является типом 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;
}
}