Parcours récursif d'un TreeNode [Résolu]

Signaler
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Je pense que cela peut aider du monde.

Objectif :
Obtenir le chemin complet de l'arborescence d'un TreeNode.

Exemple :
Ligne1_0
    Ligne2_0
       Ligne3_0
       Ligne3_1  <- On sélectionne celui-ci
    Ligne2_1
Ligne1_1

Résultat :
Ligne1_0\Ligne2_0\Ligne3_1\

Code :
        public string MakePath(TreeNode node)
        {
            char[] strArray;
            string strResult = MakePathRecursion(node);
            string strResultReversed;

            // Reverse final result to get good order
            strArray = strResult.ToCharArray();
            Array.Reverse(strArray);
            strResultReversed = new string(strArray);
            return strResultReversed;
        }

        public string MakePathRecursion(TreeNode node)
        {
            string strResult;
            string strCurrentText;
            string strCurrentTextReversed;
            char[] strArray;

            strCurrentText = node.Text + @"";
            strArray = strCurrentText.ToCharArray();
            Array.Reverse(strArray);
            strCurrentTextReversed = new string(strArray);

            if (node.Parent != null)
            {
                // Do recursion
                strResult = strCurrentTextReversed + MakePathRecursion(node.Parent);
            }
            else
            {
                strResult = String.Empty;
            }
            return strResult;
        }

Appel du code :
        string strPath = MakePath(CurrentNode);

8 réponses

Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
7
Salut,

node.FullPath marche très bien aussi :)
Messages postés
42
Date d'inscription
lundi 14 janvier 2008
Statut
Membre
Dernière intervention
23 septembre 2008

un truc du genre :

            public string MakePath(TreeNode node)
            {
                  string str = node.Text;
                  while (node.Parent != null)
                  {
                        str += string.Format("{0} "", node.Parent.Text);
                        node = node.Parent;
                  }
                  return str;
            }

donne pas le même résultat ?
Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
7
En fait, ça a même l'air de marcher mieux que les 2 codes précédents :)
Messages postés
42
Date d'inscription
lundi 14 janvier 2008
Statut
Membre
Dernière intervention
23 septembre 2008

xD au temps pour moi alors :)
Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

bon ok je sors...
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
 

<hr />
-My Blog-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Salut,

Petite remarque sur la solution de ikaer : la concaténation sans une boucle, c'est mal. (http://blogs.codes-sources.com/coq/archive/2007/07/28/un-bon-moyen-de-se-souvenir-de-l-ami-stringbuilder.aspx)

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Hummm, 8 mois après la bataille, je remarque une faute de frappe :p
Dans le post précédent je ne voulais pas dire "la concaténation SANS une boucle, c'est mal" mais bien
"la concaténation DANS une boucle, c'est mal"
Sinon, ça ne veut rien dire :p

/*
coq
MVP Visual C#
CoqBlog
*/