我正在尝试创建一种方法,该方法允许我检查 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 类型的两个元素。我该如何解决这个问题,以便我可以继续运行比较器?