我正在尝试使用一种方法来计算BST中大于x的元素数:如果树包含{3, 7, 8, -4, 6}
,并且x = 6
,则方法应该return 2
。
目前,我收到一个无法找到符号错误来比较...这是我的代码:
public int countGreater(T x)
{
BSTNode<T> base = root;
if(base == null) return 0;
int greater = great(base, x);
return greater;
}
private int great(BSTNode<T> base, T x)
{
int numG = 0;
Iterator<T> getGreatest = getIterator(Postorder);
while(getGreatest.hasNext())
{
if(compare(getGreatest.next(), x) > 0)
{
numG++;
}
}
return numG;
}
public int compare(T a, T b)
{
return (a.compareTo(b));
}
你需要通过指定类型约束让 Java 编译器知道T
有一个compareTo
方法:
class MyBst<T extends Comparable<? super T>> {
... // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... // Add this constraint
}
compareTo
是来自Comparable
接口的方法。
要使用它,您应该定义您的类是实现Comparable
接口
private <T extends Comparable<T>> int(BSTNode<T> base, T x) {
}