由于某种原因,add(value)函数不想工作。我应该能够使用Node和TreeNode来创建一个孩子。这不是一棵平衡的树。我尝试了Node和NodeTree并使用节点创建变量并将其添加但没有成功
public abstract class TreeNode implements Comparable<TreeNode>{
protected int value;
protected TreeNode left;
protected TreeNode right;
public abstract int getValue();
public abstract int getSize();
public abstract TreeNode getLeft();
public abstract TreeNode getRight();
public void add(int value){
if (value >= this.value){
if (this.right == null){
this.right = new Node(value); //trying to put a node in the "right"
}else{
right.add(value);
}
}else if(value < this.value){
if (this.left == null){
this.left = new Node(value); //trying to do the same thing here
}else{
left.add(value);
}
}
}
public String toString() {
return (left.toString() + ", " +Integer.toString(this.value) + ", " + right.toString());
}
public int CompareTo(TreeNode obj){
if(this.value > obj.value){
return 1;
}else if(this.value < value){
return -1;
}else{
return 0;
}
}
//public void remove(int value) throws NotFoundException{
//}
}
答案 0 :(得分:0)
您的代码有很多问题。首先,您不要覆盖compareTo方法。您需要将“CompareTo”更改为“compareTo”。
其次,我无法判断您是否正在尝试创建TreeNode或Node。 Node是否扩展了TreeNode? p>
第三,您已将TreeNode指定为抽象类,但您正在使用它,就像它是普通类一样,甚至将子节点作为类Node()。
第四和第五。这些是次要的,但你的add函数有“if(value&gt; = this.value){} else if(value&lt; this.value),可以改为只是其他。你也有时使用this.variable你应该真正查看它们的含义。例如在你的“CompareTo”方法中,你会说“} else if(this.value&lt; value){”。这就是检查相同的错误。变量反对自己。修复这些东西,事情会更好。你没有发布Node类时很难说出问题是什么,并且到处都有很多小错误。
答案 1 :(得分:0)
此处提供了一个起始位置:http://cs.uni.edu/~holmesm/docs/Session40.pdf
基本上,您的代码应该在新类中(例如Node)
你的添加方法很接近。在您的NullNode类中,设置toString()
方法以返回空字符串(return "";
),然后在添加方法中将this.right == null
更改为right.toString().equals ("")
。在compareTo(...)
方法中,阅读上面建议的内容并将obj.value
更改为obj.getValue()
。