J'ai un la racine a un, b, c. p>
BlockQuote> A a A1, A2, A3, puis que A1, A2 contient également des nœuds tels que X1, X2, X3 et ainsi de suite. Comme si ces nombreuses sous-notes sont là. Je sais qu'il est possible d'utiliser des boucles avec une boucle pour une boucle. P> Je veux juste accéder à tous les nœuds dans Une autre question: est-il possible d'avoir le chemin d'un nœud d'arbre dans un objet ou dans une chaîne en utilisant des fonctions de bibliothèque? Par exemple: p> Treeview code> Contrôle avec jeu de nœuds et de nœuds d'enfants. Par exemple:
TreeView code> Contrôle en utilisant une ou deux pour boucles. P> < P> Y a-t-il un algorithme pour cela ou existe-t-il d'une autre manière? P>
7 Réponses :
N'utilisez pas de boucles imbriquées, mais optez pour une solution récursive comme: appelez cette fonction pour votre nœud racine. p> pour votre question supplémentaire: chèque la propriété complet code>. p> p>
Vous pouvez utiliser une fonction récursive pour traverser l'arborescence entier: Vous pouvez ensuite appeler ceci à l'aide de: p> et il marchera d'abord la profondeur de l'arbre entier (c'est-à-dire aussi profondément que possible avant de passer au frère suivant). En passant dans la collection code> Collection signifie que ce code traitera des arbres qui ont plusieurs nœuds racines. P> Le code exemple ci-dessus imprimera le nom du nœud ainsi que le < fort> chemin complet fort> de ce nœud dans l'arbre. p> p>
Je ne suis pas le plus grand fan de récursivité, mais il semble que vous devez l'utiliser. J'ai vu un exemple intelligent de la récursion de mélange en ligne avec un itérateur.
Vous pouvez utiliser la file d'attente comme ce que j'avais fait dans mon application:
Je sais que ce fil est assez vieux et ma méthode ne réduit pas exactement la quantité de récursion et em> il peut être légèrement plus lent, mais cela rend mon code un peu plus propre. J'utilise un PROCÉDÉ D'EXTENSION POUR i puis utilisez cette méthode pour obtenir tous les nœuds de L'arbre: p> IEnumarable <> CODE> Pour aplatir n'importe quel arbre (pas seulement les nœuds de TreeView): p>
Cela a l'air très bien rangé ... peut-il être converti en vb.net? VB peut-il utiliser l'opérateur =>?
Vous pouvez créer un Méthode d'extension qui renvoie une liste Désactivants Procédé d'extension strong> p> < Pré> xxx pré> pour obtenir tous les nœuds d'une arboresview p> pour obtenir tous les nœuds enfants d'un nœud p> Vous pouvez également utiliser LINQ pour rechercher entre les nœuds. P> Procédé d'extension des ancêtres forts> p> Pour obtenir des ancêtres d'un nœud, vous pouvez aussi me intéresser
Le code suivant est utilisé pour traverser les nœuds d'une arbreView et ne renvoyant que les nœuds de feuilles: Je l'utilise pour accéder aux noms de fichiers dans un arborescence d'un explorateur: p> < Pré> xxx pré> p>