BinaryTree в стандартном API - PullRequest
       7

BinaryTree в стандартном API

1 голос
/ 01 апреля 2012

Мой учитель сказал нам, что в Java есть класс по умолчанию для двоичного дерева. Я нашел этот класс BinaryTree и попытался объявить объект BinaryTree, но он не сработал.

Как я могу объявить BinaryTree, используя этот класс и какую библиотеку я должен включить?

Я написал что-то вроде этого:

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

но в нем говорится, что BinaryTree не может быть преобразован в тип.

1 Ответ

1 голос
/ 01 апреля 2012

Ну, этот класс определенно не является "Java по умолчанию".Я думаю, ваш учитель может говорить о TreeSet, основанном на форме самобалансирующегося двоичного дерева .

Я не уверен, сколькоКлассифицируйте ссылку, которую вы даете, но она не использует дженерики, так что это, вероятно, Java 1.4-.Кроме того, он использует пакет по умолчанию - что-то вроде Java no-no, предполагая, что он может быть не готов к работе.Конструктор ожидает 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();
    }
}
...