这是我的代码,用于查找某个元素的位置。我正在使用二叉树来存储我的词典我想知道它为什么显示可比较类型的警告。我必须在我的项目中使用它,其中element是字符串类型。
public int get(Comparable element){
return getPosition(element,root);
}
private int getPosition(Comparable element, TreeNode root){
int count = 0;
if (root == null){
return -1;
}else{
Stack t = new Stack();
t.push(root);
while(!t.empty()){
TreeNode n = (TreeNode)t.pop();
if(element.compareTo(n.value)==0){
return count;
}else{
if(n.getLeftTree()!=null){
t.push(n.getLeftTree());
count++;
}
if (n.getRightTree()!= null){
t.push(n.getRightTree());
count++;
}
}
}
return -1;
}
}
答案 0 :(得分:0)
缺少java通用输入参数<...>
。
public int get(Comparable<?> element){
return getPosition(element, root);
}
private int getPosition(Comparable<?> element, TreeNode root) {
int count = 0;
if (root == null) {
return -1;
} else {
Stack<TreeNde> t = new Stack<>();
t.push(root);
while (!t.empty()) {
TreeNode n = t.pop();
if (element.compareTo(n.value) == 0) {
return count;
} else {
if (n.getLeftTree() != null) {
t.push(n.getLeftTree());
count++;
}
if (n.getRightTree() != null) {
t.push(n.getRightTree());
count++;
}
}
}
}
return -1;
}
然而,该算法似乎不计算树的左侧部分直到找到的元素。但是,如果position不是已排序元素中的索引,那可能没问题。 (我没有检查正确性,因为没有早期<
检查。)如果这是家庭作业,&#34;非递归堆栈,&#34;重做递归版本。可能是两个嵌套循环,以及-1和+1的比较。