2012-03-28 11 views
10

¿Hay una biblioteca java que tenga un árbol binario que pueda usar? No estoy ansioso por probar e implementar el mío.Buscando una biblioteca java que haya implementado el árbol binario

+0

¿Para qué se necesita el árbol binario? – Bernard

+4

Básicamente, java.util.TreeSet es un árbol binario rojo-negro, que es un árbol de búsqueda binaria equilibrado. Depende de lo que necesites, sin embargo. –

+0

Sí, el árbol binario que me gustaría almacenar no tiene que estar equilibrado. Además, no es un árbol de búsqueda binario. Estoy buscando la implementación básica donde cada nodo tiene un hijo izquierdo y derecho. – Esey

Respuesta

9

La API estándar de Java solo contiene bibliotecas que son universalmente útiles y no triviales para implementar. Un árbol básica es trivial de implementar:

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

árboles no triviales no son universalmente útil: ya sea que se necesiten como parte del modelo de datos de la aplicación, que está mejor modelado utilizando las clases de dominio específico (componente tiene -un lista de subcomponentes), o se usan como parte de un algoritmo específico. Los algoritmos generalmente requieren una estructura específica de los nodos (por ejemplo, el color o el peso del nodo necesario para mantener el árbol equilibrado), por lo que un nodo de árbol genérico tiene poco sentido.

+0

Gracias @Joni - eso tiene sentido. Supongo que daba por hecho que debía estar allí, pero no lo es. Lo implementaré para mi aplicación. – Esey

+0

Tiene razón con el árbol básico, pero definitivamente hay partes de una implementación BST no trivial que son tan útiles universalmente como cualquier otra, como encontrar el más bajo e insertar/eliminar (y equilibrar), ¿no cree? – snydergd

0

Hay una implementación de ejemplo en esta página aquí: -alrededor de la mitad inferior de la página o so-

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

+1

Estoy buscando una biblioteca probada. – Esey

+1

@Esey, luego escriba las pruebas usted mismo ... –

+0

@Bart - Puede ser en otro momento :) - Podría implementarlo yo también - pero estoy implementando una aplicación que "usa" Árboles binarios y estaría bien si no lo hiciera tiene que preocuparse por esta otra pieza. Gracias por la respuesta. – Esey

5

¿Qué pasa con http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html

Implementación de NavigableMap basado en un árbol rojo-negro. El mapa se ordena de acuerdo con el orden natural de sus claves, o mediante un comparador provisto en el momento de creación del mapa, según el constructor que se utilice.

+2

No funcionaría para mí. Estoy buscando un árbol binario básico. – Esey

Cuestiones relacionadas