尝试在java中将节点添加到树中

时间:2013-05-01 22:22:52

标签: java tree treenode addchild

由于某种原因,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{

//}
}

2 个答案:

答案 0 :(得分:0)

您的代码有很多问题。首先,您不要覆盖compareTo方法。您需要将“CompareTo”更改为“compareTo”。

其次,我无法判断您是否正在尝试创建TreeNode或Node。 Node是否扩展了TreeNode?

第三,您已将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()