2013-05-01 34 views
0

由于某些原因,add(value)函数不希望工作。我应该可以使用Node和TreeNode来创建一个孩子。这不是一棵平衡的树。我尝试了Node和NodeTree,并在节点上创建一个变量并将其添加进去,但没有成功试图向java中的树添加节点

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

你输入了什么值?你期望会发生什么,实际发生了什么?价值分配的价值在哪里? – Steve 2013-05-01 22:26:37

+1

你说你已经试过'Node'和'NodeTree'。你尝试过'TreeNode'吗? – 2013-05-01 22:28:23

回答

0

该代码有许多错误。首先你不重写compareTo方法。您需要将“CompareTo”更改为“compareTo”。

其次,我不能告诉你是否试图建立一个TreeNode或节点。节点是否扩展TreeNode?第三,你已经指定了TreeNode作为一个抽象类,但是你正在使用它,就好像它是一个普通的类,甚至把子节点作为类Node()。

第四和第五。这些都是次要的,但你的add函数有“if(value> = this.value){}否则如果(值为< this.value),它可以改变为一个else。有时你也使用this.variable,有时例如在你的“CompareTo”方法中,有一个错误,你说“} else if(this.value < value){”。这是检查相同的变量对自己。

解决这些事情,事情会运行得更好这是很难说的问题是什么时,你没有张贴Node类,并有这么多的小错误比比皆是

0

的起点,这里提供。: http://cs.uni.edu/~holmesm/docs/Session40.pdf

基本上,您的代码应该在新类中(例如节点) 您的add方法已关闭。在您的NullNode类中设置toString()方法返回空字符串(return "";),然后在添加方法更改this.right == nullright.toString().equals ("")。在compareTo(...)方法中,阅读上面建议的内容并将obj.value更改为obj.getValue()