2015-04-04 58 views
0

当除去方法故障我写从头二叉树结构,其中包括一个删除(obj对象)方法来从删除元素所述树。它似乎正常工作除了一个整数,每个类型,我不明白为什么。BinarySearchTree除去整数

public BinaryTree<E> remove(Object obj) { 
     try{ 
      E value = (E)obj; 
      int cmp = value.compareTo(this.value); 
      if(cmp == 0) { 
       List<BinaryTree<E>> kids = children(); 
       if(kids.size() == 0) { 
        return new EmptyBinarySearchTree<E>(); 
       } 
       if(kids.size() == 1) { 
        return kids.get(0); 
       } 
       //2 children 
       BinaryTree<E> successor = ((BinarySearchTree)right).smallest(); 
       BinaryTree<E> result = remove(successor.getValue()); 
       result.setValue(successor.getValue()); 
       return result; 
      } 
      if(cmp < 0) { 
       left = left.remove(value); 
      } 
      if(cmp > 0) { 
       right = right.remove(value); 
      } 
     } 
     catch(ClassCastException cce) { 

     } 
     return this; 
    } 

我用下面的,这也实现了集我建立驾驶二叉树:

package setDriver; 
import set.*; 
import list.*; 

public class HwTreeSetDriver 
{ 
    public static void main() 
    { 
     Set <Integer> values; 
     values = new TreeSet <Integer>(); 


    values.add (3); 
    values.add (5); 
    values.add (3); 



    for (int j=0; j<5; j++) 
     values.add (j * 10); 


    Iterator<Integer> itty = values.iterator(); 
    while (itty.hasNext()) 
     if (itty.next() % 2 == 1) 
      itty.remove();    // remove odd numbers 


} 

}

运行驱动程序后,大小仍然是6, set包含3,5,10,20,30,40。

以下是TreeSet中的remove(Object obj)方法,该方法依次调用最初发布的remove方法:

public boolean remove(Object obj){ 
    if(!contains(obj)) return false; 

    tree = tree.remove(obj); 
    size--; 
    return true; 
} 
+1

好一个问题,它有什么作用?没有工作代码或错误消息/堆栈跟踪,没有太多可以继续。 – 2015-04-04 22:30:02

+1

'remove'是否超载?有删除(int)版本吗? – 2015-04-04 22:31:20

+1

向我们展示您在测试时使用的代码。 – CandiedOrange 2015-04-04 22:34:41

回答

-1

Is int an object in Java?

INT不被视为一个对象 这里计算器举证

+0

这与此有关吗? OP说:“似乎除了** Integer **之外的每个类型都能正常工作”,它是一个引用类型,与int不同。 – 2015-04-04 22:32:25

+0

但功能需要一个对象,,,,, – 2015-04-04 22:35:33

+0

哦,去查看自动装箱 – CandiedOrange 2015-04-04 22:36:21