Quelle structure de données optimale en temps et en espace ?
Bonjour à tous,
Je suis actuellement en train de réaliser une structure d'arbre amenée à devenir très rapidement immense en mémoire, et que j'ai besoin d'optimiser autant que possible.
Basiquement, l'arbre est un ensemble de nœuds dont chacun pointe sur tous ses fils (les nœuds suivants dans l'arbre).
Et je suis en train de me questionner sur la manière optimale de stocker cette liste de fils (qui sont des objets de type Noeud).
En effet, un arbre peut avoir des millions voire des milliards de nœuds en fonction des données analysées, et il est donc très important que le traitement en temps et en mémoire soit optimal.
Pour ce qui est du traitement en temps, les branches issues de chaque nœuds sont peu nombreuses et à chaque fois qu'on les traite on a besoin de les itérer de toute manière jusqu'à trouver la donnée que l'on cherche. De plus, on ne retire (pour l'instant) jamais un nœud lors de la construction de l'arbre, on ne fait qu'ajouter de nouvelles branches.
Pour ce qui est du traitement en espace, la seule chose dont on ait besoin est cet itérateur sur la liste de fils.
Ma question est donc très simple : Quelle est la liste la moins lourde en espace et pour laquelle l'ajout se fasse en temps constant et la lecture par itération en C++ svp ?
Merci d'avance :)