2009-12-24 4 views
0

J'ai une donnée telle qu'il y a beaucoup de parents avec chacun 0-n enfants où chaque enfant peut avoir 0-n nœuds. Chaque nœud a un identifiant unique (clé) En fin de compte, les parents ne sont pas connectés les uns aux autres. Il semble que ce serait une liste d'arbres, mais cela semble imprécis. Je pensais les rejoindre avec une racine fictive.Structure arborescente multi-racine

Je dois être en mesure d'assemblage une liste de nœuds qui se produisent:

  • de tout noeud donné vers le bas (les enfants)
  • de tout noeud donné vers le bas (les enfants), puis jusqu'à la racine (jusqu'à au parent spécifique)
  • la mère de haut niveau d'un nœud donné (dans un O (n) fonctionnement)
  • le niveau de l'enfant dans l'opération arbre (dans un O (n))

La structure contiendra 300 000 nœuds. Je pensais peut-être que je pourrais implémenter une liste d'arbres et ensuite maintenir une structure de recherche de hachage qui fera référence à une valeur de clé spécifique pour me fournir un nœud comme point de départ.

Est-ce une structure logique? Y a-t-il une meilleure façon de le gérer? Cela me semble grossier.

+0

L'arborescence est-elle relativement statique ou fréquemment modifiée (c'est-à-dire que des nœuds ont été ajoutés ou supprimés)? –

+0

ou des arbres ....... –

Répondre

2

Si vous recherchez rapidement un noeud racine, vous pouvez créer un arbre dans lequel chaque noeud pointe vers un autre arbre.

+0

C'est pourquoi j'aime les structures de données, vous pouvez faire des choses folles avec elle. La limite est votre imagination. – Andres

+16

Avez-vous juste répondu à vous? – Tom

Questions connexes