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

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

WishhhMaster 327 Messages postés mardi 17 février 2004Date d'inscription 10 avril 2010 Dernière intervention - 13 août 2008 à 13:30
+3
Utile
Salut,

node.FullPath marche très bien aussi :)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de WishhhMaster
ikaer 42 Messages postés lundi 14 janvier 2008Date d'inscription 23 septembre 2008 Dernière intervention - 13 août 2008 à 12:00
0
Utile
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
WishhhMaster 327 Messages postés mardi 17 février 2004Date d'inscription 10 avril 2010 Dernière intervention - 13 août 2008 à 13:34
0
Utile
En fait, ça a même l'air de marcher mieux que les 2 codes précédents :)
Commenter la réponse de WishhhMaster
ikaer 42 Messages postés lundi 14 janvier 2008Date d'inscription 23 septembre 2008 Dernière intervention - 13 août 2008 à 13:57
0
Utile
xD au temps pour moi alors :)
Commenter la réponse de ikaer
scoubidou944 728 Messages postés mardi 22 avril 2003Date d'inscription 19 janvier 2017 Dernière intervention - 13 août 2008 à 15:02
0
Utile
bon ok je sors...
Commenter la réponse de scoubidou944
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 13 août 2008 à 18:53
0
Utile
 

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 14 août 2008 à 00:29
0
Utile
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
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 19 avril 2009 à 11:44
0
Utile
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.