第一次发帖。无法找到答案,所以这里是:
简介:这是我作业的一部分。赋值是在整数二叉树上工作。前三个步骤是编写十几种方法来操作和使用树,如添加新节点,计数,遍历,求和等。第四部分需要为字符串创建完全相同的类,其中值将使用compareTo方法进行比较
问题:分配的下一步需要使用多态来允许节点接受int或string。由于我在上一次演讲中只是简单地介绍了这一点,我发现自己在过去的几个小时里一直在寻找解决方案,但没有成功。
代码:
public class Node<T extends Comparable<T>> {
T val;
Node<T> left, right;
public Node(T val) {
this.val = val;
this.left = null;
this.right = null;
}
public Node<T> insert(Node n, T v) {
if (n == null) {
return new Node(v);
}
if (v.compareTo(n.val) == 0) {
return n;
}
if (v.compareTo(n.val) < 0) {
n.left = insert(n.left, v);
} else {
n.right = insert(n.right, v);
}
return n;
}
...
}
问题是在Raw类型上使用compareTo()
。我无法在任何地方找到比较两个对象/原始类型的方法。我尝试了很多变化,通常都有类似的结果。调试器不断提醒我&#34;不兼容的类型:Comparable不能转换为T&#34;。我将如何实现Comparable以使这个二叉树工作?
答案 0 :(得分:1)
似乎,它就像参与传递的Node
一样简单。
public Node<T> insert(Node<T> n, T v)
另一个解决方案是让Node
本身实现Comparable
。
public class Node<T extends Comparable<T>> implements Comparable<Node<T>> {
// ...
}