2012-03-28 13 views
10

Esiste una libreria java con albero binario che posso utilizzare? Non vedo l'ora di testare e implementare il mio.Ricerca di una libreria java che ha implementato l'albero binario

+0

A cosa serve l'albero binario? – Bernard

+4

Fondamentalmente il java.util.TreeSet è un albero binario rosso-nero, che è un albero di ricerca binario bilanciato. Dipende da ciò che ti serve, però. –

+0

Sì, l'albero binario che vorrei memorizzare non ha bisogno di essere bilanciato. Inoltre, non è un albero di ricerca binario. Sto cercando l'implementazione di base in cui ogni nodo ha un figlio sinistro e destro. – Esey

risposta

9

L'API standard Java contiene solo librerie che sono universalmente utili e non banali da implementare. Un albero di base è banale da implementare:

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

alberi non banale non sono universalmente utili: o sono necessari come parte del modello di dati di applicazione, che è meglio modellato utilizzando specifiche classi di dominio (componente ha-un elenco di sottocomponenti), o sono usati come parte di uno specifico algoritmo. Gli algoritmi di solito richiedono una struttura specifica dai nodi (ad esempio il colore o il peso del nodo necessario per mantenere l'albero bilanciato), quindi un nodo ad albero generico ha poco senso.

+0

Grazie a @Joni: è logico. Immagino di aver dato per scontato che debba essere lì - ma non lo è. Lo implementerò per la mia app. – Esey

+0

Hai ragione con l'albero base, ma ci sono sicuramente parti di un'implementazione BST non banale che sono universalmente utili come qualsiasi cosa, come trovare il minimo e inserire/rimuovere (e bilanciare), non credi? – snydergd

0

C'è un esempio di implementazione di questa pagina qui: -around a metà inferiore della pagina o cd

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

+1

Sto cercando una libreria testata. – Esey

+1

@Esey, quindi scrivi tu stesso i test ... –

+0

@Bart - Potrebbe essere un'altra volta :) - Potrei implementarlo anch'io - ma sto implementando un'app che "usa" gli alberi binari e sarebbe bello se non lo facessi devi preoccuparti di questo altro pezzo. Grazie per la risposta. – Esey

5

Che dire di http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html

Un'implementazione NavigableMap basata su albero rosso-nero. La mappa viene ordinata in base all'ordinamento naturale delle sue chiavi o a un comparatore fornito durante la creazione della mappa, a seconda del costruttore di utilizzato.

+2

Non funzionerebbe per me. Sto cercando un albero binario di base. – Esey

Problemi correlati