二叉排序树中的 compareTo 方法
compareTo method in a Binary Sorted Tree
我正在尝试使用一种方法来计算 BST 中大于 x 的元素的数量:如果树包含 {3, 7, 8, -4, 6}
和 x = 6
,方法应该 return 2
.
目前,我的 compareTo 出现无法找到符号错误...这是我的代码:
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
接口的方法。
要使用它,您应该定义您的 class 是实现 Comparable
接口
private <T extends Comparable<T>> int(BSTNode<T> base, T x) {
}
我正在尝试使用一种方法来计算 BST 中大于 x 的元素的数量:如果树包含 {3, 7, 8, -4, 6}
和 x = 6
,方法应该 return 2
.
目前,我的 compareTo 出现无法找到符号错误...这是我的代码:
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
接口的方法。
要使用它,您应该定义您的 class 是实现 Comparable
接口
private <T extends Comparable<T>> int(BSTNode<T> base, T x) {
}