【发布时间】:2020-02-27 11:49:49
【问题描述】:
我有一个类分配,我需要将一个目标排序到一个二叉树节点中,给定一个根,我需要将它与根进行比较,如果目标小于根的值,或者如果目标大于根的值,则将目标作为右孩子。
我必须使用给定的方法头和参数,并且我已经这样编写了我的代码:
public static boolean find(TreeNode t, Comparable x)
{
TreeNode p = t;
if(t == null)
return false;
while(p != null)
{
if(p.getValue() == x)
return true;
else if(p.getValue() < x)
p = p.getLeft();
else
p = p.getRight();
}
return false;
}
返回此错误:
BinarySearchTree.java:109:错误:二元运算符'的操作数类型错误
我也尝试了 compareTo 方法,通过尝试类似的东西
if(p.getValue().compareTo(x) == 0)
return true;
返回以下错误:
BinarySearchTree.java:107:错误:找不到符号 if(p.getValue().compareTo(x)) ^ 符号:方法 compareTo(Comparable) 位置:类对象
如何解决此错误?我试图搜索这个问题,但这并不是特别有用。
更新——TreeNode 类:
class TreeNode
{
private Object value;
private TreeNode left, right;
public TreeNode(Object initValue)
{
value = initValue;
left = null;
right = null;
}
public TreeNode(Object initValue, TreeNode initLeft, TreeNode initRight)
{
value = initValue;
left = initLeft;
right = initRight;
}
public Object getValue()
{
return value;
}
public TreeNode getLeft()
{
return left;
}
public TreeNode getRight()
{
return right;
}
public void setValue(Object theNewValue)
{
value = theNewValue;
}
public void setLeft(TreeNode theNewLeft)
{
left = theNewLeft;
}
public void setRight(TreeNode theNewRight)
{
right = theNewRight;
}
}
【问题讨论】:
标签: java tree binary-tree binary-search-tree comparable