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

Messages postés
728
Date d'inscription
mardi 22 avril 2003
Dernière intervention
19 janvier 2017
- - Dernière réponse : cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 19 avril 2009 à 11:44
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);
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
327
Date d'inscription
mardi 17 février 2004
Dernière intervention
10 avril 2010
8
3
Merci
Salut,

node.FullPath marche très bien aussi :)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de WishhhMaster
Messages postés
42
Date d'inscription
lundi 14 janvier 2008
Dernière intervention
23 septembre 2008
0
Merci
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 ?
Commenter la réponse de ikaer
Messages postés
327
Date d'inscription
mardi 17 février 2004
Dernière intervention
10 avril 2010
8
0
Merci
En fait, ça a même l'air de marcher mieux que les 2 codes précédents :)
Commenter la réponse de WishhhMaster
Messages postés
42
Date d'inscription
lundi 14 janvier 2008
Dernière intervention
23 septembre 2008
0
Merci
xD au temps pour moi alors :)
Commenter la réponse de ikaer
Messages postés
728
Date d'inscription
mardi 22 avril 2003
Dernière intervention
19 janvier 2017
215
0
Merci
bon ok je sors...
Commenter la réponse de scoubidou944
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
58
0
Merci
 

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
0
Merci
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
*/
Commenter la réponse de cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
0
Merci
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
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.