2012-03-28 3 views
10

Есть ли Java-библиотека с двоичным деревом, которое я могу использовать? Я не собираюсь тестировать и реализовывать свои собственные.Ищете библиотеку java, которая реализовала двоичное дерево

+0

Для чего вам нужно бинарное дерево? – Bernard

+4

В основном java.util.TreeSet - это красно-черное двоичное дерево, которое представляет собой сбалансированное двоичное дерево поиска. Тем не менее, зависит от того, что вам нужно. –

+0

Да - бинарное дерево, которое я хотел бы хранить, не должно быть сбалансированным. Кроме того, это не двоичное дерево поиска. Я ищу базовую реализацию, где каждый узел имеет левый и правый дочерние элементы. – Esey

ответ

9

Стандартный API Java содержит только библиотеки, которые универсальны и нетривиальны для реализации. Основное дерево просто реализовать:

class BinaryTree { 
    BinaryTree left; 
    BinaryTree right; 
    Object value; 
} 

Нетривиальных дерева не универсально полезны: либо они необходимы как часть модели данных приложения, которые лучше смоделированы с использованием домена конкретных классов (компонент имеет-а список подкомпонентов), или они используются как часть конкретного алгоритма. Алгоритмы обычно требуют определенной структуры от узлов (например, цвета или веса узла, необходимых для поддержания сбалансированного дерева), поэтому общий узел дерева имеет мало смысла.

+0

Спасибо @Joni - это имеет смысл. Наверное, я считал само собой разумеющимся, что он должен быть там, но это не так. Я реализую его для своего приложения. – Esey

+0

Вы правы с базовым деревом, но есть определенные части нетривиальной реализации BST, которые так же универсальны, как и все, например, поиск самого низкого уровня и вставка/удаление (и балансировка), не так ли? – snydergd

1
+2

Нет - я хотел бы импортировать его и сказать: BinaryTree x = new BinaryTree(); другими словами, я хотел бы повторно использовать рабочий пакет, класс ... – Esey

0

Там является примером реализации на этой странице здесь: -around в нижней части страницы или так

http://cslibrary.stanford.edu/110/BinaryTrees.html

+1

Я ищу тестированную библиотеку. – Esey

+1

@ Esey, тогда напишите сами тесты ... –

+0

@Bart - Может быть в другой раз :) - Я тоже мог реализовать его сам - но я реализую приложение, которое «использует» двоичные деревья, и было бы неплохо, если бы я не придется беспокоиться об этом другом. Спасибо за ответ. – Esey

5

Что относительно http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html

Реализация NavigableMap на основе Red-Black. Карта сортируется в соответствии с натуральным заказами его ключей или компаратором, предусмотренным на момент создания карты, в зависимости от того, какой используется конструктор .

+2

Это не сработает для меня. Я ищу базовое двоичное дерево. – Esey