Ho bisogno di scrivere un albero in cui ogni elemento possa avere un numero qualsiasi di elementi figli, e per questo motivo ogni ramo dell'albero può avere qualsiasi lunghezza.
All'inizio l'albero riceverà solo elementi e quindi verrà utilizzato esclusivamente per l'iterazione, anche se si tratta di rami senza un ordine specifico.
L'albero avrà diversi milioni di elementi e deve essere veloce ma anche efficiente in termini di memoria.
Il mio piano rende una classe nodo per memorizzare gli elementi e i puntatori ai suoi figli. Quando l'albero è completamente costruito, lo trasformerebbe in un array o qualcosa di più veloce e, se possibile, caricato nella cache del processore.
La costruzione e la ricerca sull'albero sono due problemi diversi. Posso concentrarmi su come risolvere ogni problema sul modo migliore individualmente? La costruzione di deve essere il più veloce possibile ma può utilizzare la memoria a piacimento. Quindi la trasformazione in un formato che ci dà velocità durante l'iterazione dei rami dell'albero. Questo dovrebbe preferibilmente essere un array per evitare di andare avanti e indietro dalla RAM alla cache in ogni elemento della struttura.
Quindi la vera domanda è quale sia la struttura per implementare un albero per massimizzare la velocità di inserimento, come posso trasformarlo in una struttura che mi dà la migliore velocità e memoria?