0

我需要在二叉搜索树上编写一个排序集,问题是,我不知道如何使用抽象类型并在上下文中比较这两个对象,因为我需要声明自己的比较器。

我到目前为止,但不知何故我被卡住了,因为我认为 Comparable 类型是不可能的,因为我自己的比较器方法。

静态节点类:

static class  BinaryNode<ElementType> {
    ElementType element;
    BinaryNode <ElementType> right;
    BinaryNode <ElementType> left;

    public BinaryNode(ElementType elm) {
        ElementType element = elm;
        right=left=null;
    }
}

我感到困惑的方法示例:

   private BinaryNode find( ElementType x, BinaryNode t ) {
        while( t != null ) {
            if( x.compareTo( t.element ) < 0 )
                t = t.left;
            else if( x.compareTo( t.element ) > 0 ) // is done with overrite of the comparable method, any Ideas please?
                t = t.right;
            else
                return t;    // Match
        }

        return null;         // Not found
    }
4

1 回答 1

0

您需要使用通配符

class  BinaryTree <ElementType extends Comparable<ElementType>> { 
    private class  BinaryNode <ElementType extends Comparable<ElementType>> { 
           BinaryNode<ElementType> left,right;
           ElementType value;
           public BinaryNode(ElementType value, BinaryNode<ElementType> left ,  BinaryNode<ElementType> right) {
                  this.value = value;
                  this.left = left;
                  this.right = right;
            }
     }
}

我也相信你实际上可以在内部类 BinaryNode 中完全省略泛型类型参数。

于 2012-11-09T21:19:09.420 回答