hello,
j aimerais avoir votre avis sur la structure de données que vous implementeriez pour representer un arbre en c#.
Specialement les collections utilisées.
merci d avance.
hello,
j aimerais avoir votre avis sur la structure de données que vous implementeriez pour representer un arbre en c#.
Specialement les collections utilisées.
merci d avance.
salut
j'utiliserai bien les List<>.. pour faire cela
en créant une classe genre :
public class toto : list<toto>
et voila
The Monz, Toulouse
Moi je me suis crée un IEnumerable pour garder tous les noeuds de ma tree, comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /// <summary> /// Interface that provide a list of selected INodes. /// </summary> public interface INodeSelectionProvider { /// <summary> /// Gets the list of Selected INodes. /// </summary> IEnumerable<INode> SelectedNodes { get; } }
Un XmlDocument ou un objet au fonctionnement similaire semble approprié pour stocker un arbre (c'est vrai qu'il y a pas mal de propriétés / méthodes inutiles pour le stockage d'un arbre dans XmlDocument mais c'est une bonne base d'inspiration pour la création d'un arbre).
Il est clair que le XmlDocument est tout indiqué si tu ne veux pas te prendre la tête, mais ça risque de poser problème si t'a beaucoup de données.
Si t'a juste besoin de stocker un arbre sans vraiment faire de traitements dessus, tu dois faire une classe "noeud" avec quelques notions :
- un noeud parent (si null = racine)
- des enfants (une List<noeud>)
Si tu dois faire de la recherche dans ton arbre, le mieux reste le Xml, avec le XPath comme langage de requête.
salut
je ne suis pas trop d'accord par rapport à l'utilisation d'XML
Si on parle de performance, un arbre classique avec un noeud representé
par son pere et ses enfants me semble pas mal...
Moi je ferais surement un truc du genre :
Apres, XML s'est quand meme long...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public class Noeud : List<Noeud> { public Noeud Papa; // :) }
Tout depend de l'usage de ton arbre. moi je te parle d'un arbre plutot adapté
pour un graphe de scène (arborescence classique d'un moteur graphique)
voila
The Monz, Toulouse
Je voulais juste dire que la façon dont est implementé XmlDocument est une bonne base d'inspiration :
un objet arbre,
n objets noeuds qui ont : un Parent / des ChildNodes (tous de type noeud).
Bien entendu, XmlDocument risque d'être lent. Mais le support de XPath peut être intéressant. Tout dépends des besoins.
Et que pensez vous d'un dictionnaire de dictionnaire de dictionnaire de dictionnaire ....
Premier Dico = Nom de l'abre :
Clé nom d'une branche
valeur Un autre dico.
Pour ce nouveau dico on recommence :
Clé nom d'une branche
valeur Un autre dico.
Pour le dernier dico la valeur est la feuille
En 1.1 les valeurs sont de type Objet imaginez ce que cela donnerais pour ne serait que trois niveau :
Ce serait marrant nom
Code : Sélectionner tout - Visualiser dans une fenêtre à part string toto = (string)((ListDictionnary)((ListDictionnary)((ListDictionnary)Dico["branche1"])["branche2"])["branche3"])["branche4"];
Ok je sort
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager