二叉排序树中的 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) {

}