2012-04-01 66 views
1

我的老師告訴我們,在Java中有一個默認類用於二叉樹。我發現this BinaryTree class,我試圖宣佈一個BinaryTree對象,但它沒有奏效。BinaryTree在標準的API

如何使用此類聲明BinaryTree以及應該包含哪個庫?

我寫了這樣的事情:

private BinaryTree<Integer> c=new BinaryTree<Integer>(); 

,但它說,BinaryTree不能被解析爲一個類型。

回答

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(); 
    } 
} 
+0

非常感謝你。 – sonya 2012-04-01 15:02:25