一般的なバイナリ検索ツリーのコードは次のとおりです。私はすでに検索機能を実装していません。なぜなら、すでにコードに指摘されている1行目、2行目、3行目にエラーがあるからです。エラーは言う:Java汎用バイナリ検索ツリーはTタイプを比較できません
オペレータ<は、引数の型(S)Tに対して定義されていない、T.
だから、私は、コンパイラはこれらのタイプまたは類似のものを比較する方法を知っていないと思います。さて、ちょっとした研究をしましたが、ComperableとcompareToメソッドとは何か関係があることがわかりましたが、Javaルーキーとしてはコードを修正できませんでした。どのようにそれを修正するための任意のアイデア? <
、<=
、>=
と>
などの
import java.util.*;
import java.io.*;
public class Tree<T>
{ private Node<T> root = null;
public boolean insert(T element)
{ if (isEmpty())
{ root = new Node<T>(element);
return true; }// empty tree, Node could be inserted, return true
Node<T> current = root; // start at root
Node<T> parent; // the current Node's parent
do
{parent = current;
if (element < current.element) // 1
current = current.left; // go to left
else if (element > current.element) //2
current = current.right; // go to right
else
return false; } // duplicates are NOT allowed, element could not be inserted -> return false
while (current != null);
Node<T> node = new Node<T>(element);
if (element < current.element) // 3
parent.left = node;
else
parent.right = node;
return true; } // node successfully inserted
public boolean isEmpty() { return root == null; }
private static class Node<T> // static member class
{ Node<T> left = null;
Node<T> right = null;
final T element;
Node(T element) { this.element = element; } }
}
あなたは 'Comparable'実装するための 'T'制約する必要があります:'ツリーは '拡張>を。次に、 'element.compareTo(current.element)<0'を使用します。 –
@Andy Turner Thaks男、それはそれを修正! –