我的老师告诉我们,Java中有一个二进制树的默认类。我找到了this BinaryTree class,我试图声明一个BinaryTree
对象,但它不起作用。
如何使用此类声明BinaryTree
以及我应该包含哪个库?
我写了这样的话:
private BinaryTree<Integer> c=new BinaryTree<Integer>();
但是它说BinaryTree
无法解析为某种类型。
答案 0 :(得分:1)
那个类肯定不是“默认的java”。我想你的老师可能会谈论基于TreeSet
形式的self-balancing binary tree。
我不确定你给的链接类的年龄是多少,但它不使用泛型,所以它可能是Java 1.4-。此外,它使用的是默认包 - 这有点像Java禁忌,表明它可能不是生产就绪的。构造函数需要Comparator
,它可以比较树将存储的实例。例如,如果要按顺序存储整数,可以将二叉树声明为:
BinaryTree bt = new BinaryTree(new Comparator(){
public int compare(Object a, Object b){
return ((Integer) a).intValue() - ((Integer) b).intValue();
}
});
上面的代码声明了一个实现Comparator
接口的匿名类。或者,您可以使用常规类来执行相同的操作:
MyIntegerComparator comparator = new MyIntegerComparator();
BinaryTree bt = new BinaryTree(comparator);
你有代码..
class MyIntegerComparator implements Comparator {
public int compare(Object a, Object b){
return ((Integer) a).intValue() - ((Integer) b).intValue();
}
}