有人可以解释为什么我收到此错误:方法AVLNode类型的undefinedTo(AVLNode)未定义
这是我的Tree类的简化版本:
public class AVLTree< E extends Comparable<E> >
{
private AVLNode<E> root ;
public AVLTree()
{
this.root = null;
}
public void insert ( AVLNode<E> item )
{
if( item.getLeft().compareTo(item.getItem() ) < 0) //ERROR IS HERE
{
}
}
}
以下是我的Node类的简短版本
class AVLNode <E extends Comparable<E> >
{
private AVLNode<E> item;
private AVLNode<E> left;
public AVLNode ( AVLNode<E> item)
{
this.item = item;
this.left = null;
}
public AVLNode( AVLNode<E> item, AVLNode<E> lft )
{
this.item = item;
this.left = lft;
}
public AVLNode<E> getItem()
{
return this.item;
}
public AVLNode<E> getLeft()
{
return this.left;
}
}
最佳答案
您的AVLNode
类显然应如下所示:
public class AVLNode<E extends Comparable<E>> {
private E item;
//...
public int compareTo(final E obj) {
return this.item.compareTo(obj);
}
区别:
item
的类型应为E
而不是AVLNode<E>
,因为您要存储E而不是AVLNode
。为了说明您的
AVLNode
是可比较的,他们可以通过委派Comparable<T>
方法来实现E#compareTo()
自己:public class AVLNode<E extends Comparable<E>> implements Comparable<AVLNode<E>> {
private E item;
//...
@Override
public int compareTo(final AVLNode<E> other) {
return this.item.compareTo(other.item);
}
}