У меня есть назначение класса, где мне нужно отсортировать цель в узел двоичного дерева, где дано root, мне нужно сравнить его с root и поставить цель как левого потомка, если цель меньше значения root, либо ставьте цель как правый дочерний элемент, если цель больше значения root.
Я должен использовать заголовок метода и аргументы, как указано, и я написал свой код следующим образом:
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: ошибка: неверные типы операндов для двоичного оператора '<' </p>
Я также попробовал метод CompareTo, попробовав что-то вроде
if(p.getValue().compareTo(x) == 0)
return true;
, который возвращает ошибку ниже:
BinarySearchTree. java: 107: ошибка: не удается найти символ if (p.getValue () .compareTo (x)) ^ символ: метод compareTo (Comparable) расположение: класс Объект
Как я могу исправить эту ошибку? Я пытался найти эту проблему, но это не особо помогло.
UPDATE - класс 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;
}
}