我正在用java开发树。我目前正在研究检索和插入方法。以下是方法:
public void insert(E item) {
if(item <= node.item){
if(node.left == null){
node.left = new TreeNode<E>(item);
}
else{
insert(node.left.item);
}
}
else{
if(node.right == null){
node.right = new TreeNode<E>(item);
}
else{
insert(node.right.item);
}
}
root.item = item;
}
public E retrieve(E item) {
if(item == node.item){
return item;
}
else if(item <= node.item){
if(node.left == null){
return null;
}
else{
return retrieve(node.left.item);
}
} else{
if(node.right == null){
return null;
}
else {
return retrieve(node.right.item);
}
}
}
在上面的代码中,if语句:
if(item <= node.item)
正在给我以下错误:
java: bad operand types for binary operator '<='
first type: E
second type: E
我有点困惑,因为当我用compareTo((切换操作数时,它让我知道结果是布尔值,但我们期望的是int。我不太确定如何比较它们;或者更确切地说,与它们进行比较。SOS!
谢谢,T
如果你的老师心脏病发作,让我们先修复他的泛型类型。这个
public class BinarySearchTree<E extends Comparable<E>> extends BinaryTree<E>
应该是
public class BinarySearchTree<E extends Comparable<? super E>> extends BinaryTree<E>
您可以使用Comparable<T>
进行比较。也就是说,
if(item <= node.item){
应该是
if (item.compareTo(node.item) <= 0)
依此类推,使用item.compareTo
而不是<
、==
或>
。