当除去方法故障我写从头二叉树结构,其中包括一个删除(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;
}
好一个问题,它有什么作用?没有工作代码或错误消息/堆栈跟踪,没有太多可以继续。 – 2015-04-04 22:30:02
'remove'是否超载?有删除(int)版本吗? – 2015-04-04 22:31:20
向我们展示您在测试时使用的代码。 – CandiedOrange 2015-04-04 22:34:41