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 :

B-Arbre vers liste


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut B-Arbre vers liste
    Bonjour,

    Je suis confronté à un problème assez basique je pense.

    Je dispose d'un B-Arbre que j'aimerais transformer en liste.

    Ce B-Arbre représente des projets qui peuvent ou peuvent ne pas avoir de sous projets. Il peut y avoir 1 ou plusieurs projets au sommet de l'arbre.

    Je ne trouve pas la récursion qui me permette de le faire.

    Quelqu'un a une bonne idée svp ?

    Merci !

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Quelquechose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    List<MyNodeDefinition> MyList= new List<MyNodeDefinition> () ; 
    MyNodeDefinition TreeRoot = ... // la racine du B-Arbre 
    NodeToList(TreeRoot,MyList)
     
    private void NodeToList(MyNodeDefinition TheNode,List<MyNodeDefinition>  TheList)
    {
      TheList.Add(TheNode) ;
      for (int i=0;i<Node.Children.Count;i++) NodeToList(Node.Children[i],MyList)
    }

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    La librairie Dvp.NET a une méthode d'extension Flatten qui fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Node[] rootNodes = new[] { treeRoot };
    IEnumerable<Node> allNodes = rootNodes.Flatten(node => node.Children, TreeTraversalMode.BreadthFirst);
    le TreeTraversalMode indique l'ordre de parcours de l'arbre :
    - BreadthFirst : parcours en largeur
    - DepthFirst : parcours en profondeur

    Au fait, tu es sûr que c'est un B-Arbre et pas simplement un arbre ? Parce qu'un B-Arbre est quelque chose de très spécifique, qui ne me semble pas particulièrement adapté à la représentation d'une hiérarchie...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    Bonjour,

    Il me semble que c'est un B-Arbre, ou en tous les cas c'est la définition la plus approchante :

    J'ai un certain nombre de projets à la "Racine"
    Chacun de ces projet peut ou peut ne pas avoir de sous-projets.

    Mais je peux me tromper.

    En tous les cas, merci, ça fonctionne nickel !

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    D'après Wikipedia un B-arbre est un arbre équilibré, ce qui a priori n'est pas la cas de ta structure. Toi en fait tu as juste une collection de noeuds racines, il n'y a pas de mécanisme d'équilibrage.

    Tu as utilisé quelle solution finalement ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    J'ai utilisé la méthode de Graffito.

    Du coup, ma structure n'a pas de nom.

    Merci !

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

Discussions similaires

  1. vecteur C vers liste Python
    Par jyjeanphi dans le forum Interfaçage autre langage
    Réponses: 4
    Dernier message: 30/03/2009, 05h01
  2. [Tableaux] Tableau numérique vers liste
    Par jeronimo83 dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 15h57
  3. [Tableaux] tableau vers liste deroulane
    Par flydragon dans le forum Langage
    Réponses: 5
    Dernier message: 12/04/2006, 16h11
  4. Initialisation d'un arbre avec liste
    Par Naruto_kun dans le forum C
    Réponses: 15
    Dernier message: 02/01/2006, 22h43

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