La libreria di classi base in .NET ha alcune eccellenti strutture dati per le raccolte (Elenco, Coda, Catasta, Dizionario), ma stranamente non contiene alcuna struttura di dati per alberi binari. Questa è una struttura terribilmente utile per determinati algoritmi, come quelli che traggono vantaggio da diversi percorsi trasversali. Sto cercando un'implementazione corretta, scritta e libera.Perché non esiste una classe di albero <T> in .NET?
Sono semplicemente cieco, e non trovandolo ... è sepolto da qualche parte nel BCL? In caso contrario, qualcuno può raccomandare una libreria C# /. NET libera o open-source per alberi binari? Preferibilmente uno che impiega generici.
MODIFICA: Per chiarire quello che sto cercando. Non sono interessato alle raccolte di dizionari ordinate che usano internamente un albero. In realtà sono interessato a un albero binario, uno che espone la sua struttura in modo che tu possa fare cose come estrarre sottostrutture, o eseguire traversal post-fix sui nodi. Idealmente, una tale classe potrebbe essere estesa per fornire i comportamenti di alberi specializzati (ad esempio Rosso/Nero, AVL, Bilanciato, ecc.).
e su LinkedList? –
concordato. Occasionalmente ho la necessità di trovare (in tempo O (Log N)) i due nodi che hanno associato un valore (quando il valore non è stato trovato nella raccolta). Ad esempio la collezione (albero) contiene 13 e 17 (tra gli altri) e sto cercando il massimo minore e minore di 16. Un albero potrebbe farlo, ma Dizionari, liste ordinate e tabelle hash prendono O (N) . – Les