BSTにアイテムが含まれているかどうかを確認できるメソッドを作成しようとしています。これは私がこれまでに持っているものです:
public boolean contains(Object item) {
// YOUR CODE HERE
//changes item to E so it can be used in the comparator
E value1 = (E) item;
if (root.value.equals(item)){
return true;
}
comp.compare(value1,root.value);
if(value1<root.value){
if (left == null)
return null;
else
return left.contains(item);
}
else if(item >= value){
if (right == null)
return null;
else
return right.contains(item);
}
}
これらは私のフィールドです:
// Data fields
private BSTNode root;
private int count = 0;
private Comparator<E> comp; // default comparator
/** Private class for the nodes.
* Has public fields so methods in BSTSet can access fields directly.
*/
private class BSTNode {
// Data fields
public E value;
public BSTNode left = null;
public BSTNode right = null;
// Constructor
public BSTNode(E v) {
value = v;
}
}
public BSTSet() {
comp = new ComparableComparator(); // Declared below
}
public BSTSet(Comparator <E> c) {
comp = c;
}
私の質問は、contains メソッドが機能するように修正する方法です。これまでのところ、comp.compare(value1.root.value)) の下の行に到達し、「<」はタイプ E の 2 つの要素では使用できないと述べています。これを修正して、引き続きコンパレーターを実行できるようにするにはどうすればよいですか?