IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

representation d'un arbre


Sujet :

C#

  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut representation d'un arbre
    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.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    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

  3. #3
    Membre du Club Avatar de AdriM
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 66
    Points
    66
    Par défaut
    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; }
        }

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    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).

  5. #5
    Membre régulier Avatar de maitredede
    Homme Profil pro
    Pisseur de code
    Inscrit en
    Mai 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Pisseur de code

    Informations forums :
    Inscription : Mai 2006
    Messages : 59
    Points : 106
    Points
    106
    Par défaut
    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.

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Noeud : List<Noeud>
    {
        public Noeud Papa; // :)
    }
    Apres, XML s'est quand meme long...

    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

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    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.

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string toto = (string)((ListDictionnary)((ListDictionnary)((ListDictionnary)Dico["branche1"])["branche2"])["branche3"])["branche4"];
    Ce serait marrant nom

    Ok je sort

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Representation graphique d'un arbre type généalogique
    Par Apo94 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 02/04/2008, 09h22
  2. Algorithme pour representer des arbres quelconques
    Par yarf dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 21/08/2006, 14h49
  3. representation d'arbres en Java
    Par yarf dans le forum Langage
    Réponses: 7
    Dernier message: 16/08/2006, 21h37
  4. Comment representer un arbre (binaire ou non) en python?
    Par MadCat34 dans le forum Général Python
    Réponses: 2
    Dernier message: 22/03/2006, 16h25
  5. [LG]representation arbre bianire
    Par brahim dina dans le forum Langage
    Réponses: 5
    Dernier message: 13/04/2004, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo