如何比较java中的泛型类型和非泛型类型值?

时间:2014-05-27 00:44:10

标签: java

以下代码检查给定的二叉树是否是二进制搜索树,这是众所周知的代码。 但问题是Node类有一个泛型类型值。

因此,以下代码出现错误,因为它比较泛型类型T和非泛型类型int。我已经尝试了这个,但我无法找到解决方案。在这种情况下,我不能使用compareTo()。 (当然,如果我将Node类更改为int值,但我不想像这样更改Node类。)

有任何想法或想法吗?

public class Node<T> {
Node<T> left;
Node<T> right;
T   value;

public Node(T value) {
this.value = value;
this.left = null;
this.right = null;
}

public boolean BTisBST(Node<T> root) {
if(root == null)
return false;

return BTisBST(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
}

public boolean BTisBST(Node<T> root, int min, int max) {
if(root == null)
return true;

if(min > root.value || root.value > max )
return false;

return  BTisBST(root.left, min, root.value && BTisBST(root.right, root.value + 1, max);
}   

1 个答案:

答案 0 :(得分:3)

最简单的解决方案是更改模板类型

// Now take any type(s) that are Comparable.
public class Node<T extends Comparable<T>> {
}