Parcours récursif d'un TreeNode

Résolu
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 - 13 août 2008 à 11:41
cs_coq Messages postés 6350 Date d'inscription samedi 1 juin 2002 Statut Membre 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);

8 réponses

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

node.FullPath marche très bien aussi :)
3
ikaer Messages postés 42 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 23 septembre 2008
13 août 2008 à 12:00
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 ?
0
WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
13 août 2008 à 13:34
En fait, ça a même l'air de marcher mieux que les 2 codes précédents :)
0
ikaer Messages postés 42 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 23 septembre 2008
13 août 2008 à 13:57
xD au temps pour moi alors :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
13 août 2008 à 15:02
bon ok je sors...
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 août 2008 à 18:53
 

<hr />
-My Blog-
0
cs_coq Messages postés 6350 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 août 2008 à 00:29
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
*/
0
cs_coq Messages postés 6350 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 avril 2009 à 11:44
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
*/
0
Rejoignez-nous