0

この方法でノードを実装するバイナリ ツリーがあります。

public class BinaryTreeNode<T>
{
    T element;
    BinaryTreeNode<T> leftChild;  // left subtree
    BinaryTreeNode<T> rightChild; // right subtree
}

ツリーに保存されている最大値を検索しようとしていますが、これを達成するための成功した方法を作成できませんでした。これが私が試したことです:

public void maxElement(Method visit)
{
    ArrayList<T> a = new ArrayList<>();
    BinaryTreeNode<T> b = root;

    while(b != null)
    {
        try
        {
            visit.invoke(null, b); //This visit Method is to traverse the nodes
        }
        catch(Exception e)
        {
            System.out.println(e);
        }

        if(b.leftChild != null)
            a.add(b.leftChild.element);
        if(b.rightChild != null)
            a.add(b.rightChild.element);

        Collections.sort(a); //Here is where it fails
        System.out.println(a.get(0));
    }
}

これは、IDE がスローするエラーです。

範囲の不一致: Collections 型のジェネリック メソッド sort(List) は、引数 (ArrayList) には適用されません。推定された型 T は、制限付きパラメーターの有効な代替ではありません

ジェネリック型の並べ替えに失敗していることはわかっていますが、必要なものを達成する方法がわかりません。

4

2 に答える 2

3

が比較をサポートする型であると予想される場合Tは、宣言する必要があります

public class BinaryTreeNode<T extends Comparable<T>> {

これは、「タイプ T のオブジェクトは、タイプ T の他のオブジェクトと比較可能でなければならない」と読む必要があります。

于 2013-11-08T20:16:51.973 に答える