Schéma récursif
jacma
Messages postés
36
Statut
Membre
-
crabs Messages postés 909 Statut Membre -
crabs Messages postés 909 Statut Membre -
Bonjour
Je cherche un shéma clair exposant une démarche récursive pour lparcourir toutes les branches d'un arbre. Suivant le principe qu'un schéma vaut mieux que toute explication, j'ai vainement cherché un tel shéma.
A défautn l'exposé textuel de l'itération me suffirait peut-être.
Merci.
Je cherche un shéma clair exposant une démarche récursive pour lparcourir toutes les branches d'un arbre. Suivant le principe qu'un schéma vaut mieux que toute explication, j'ai vainement cherché un tel shéma.
A défautn l'exposé textuel de l'itération me suffirait peut-être.
Merci.
A voir également:
- Schéma récursif
- Schéma téléphone oublié - Guide
- Schema installation rj45 maison fibre - Forum câblage
- Comment repartir la fibre pour ordi et tele? - Forum câblage
- Schéma branchement décodeur canal+ plus hdmi ✓ - Forum Enceintes / HiFi
- Branchement HC/TV et boîtier carré CANAL PLUS - Forum Format et connectique vidéo
4 réponses
Salut,
Sand quelle langage? En C ou je ne sais pas C++, je crois qu'il y a une fonction qui s'appelle retrive(). À confirmer!
Sand quelle langage? En C ou je ne sais pas C++, je crois qu'il y a une fonction qui s'appelle retrive(). À confirmer!
Merci de ta réponse
C'est en VB, mais je pense que cela doit se ressembler quel que soit le langage: c'est un shéma que je cherche. J'ai rélisé la fonction récursive qui fonctionne en VB me permettant de parcourir une arborscence, j'arrive à peu près à l'expliquer textuellement, mais d'une façon peut-être pas très claire, et c'est donc pour cela que je pense que le shéma me serait d'une grande utilité.
C'est en VB, mais je pense que cela doit se ressembler quel que soit le langage: c'est un shéma que je cherche. J'ai rélisé la fonction récursive qui fonctionne en VB me permettant de parcourir une arborscence, j'arrive à peu près à l'expliquer textuellement, mais d'une façon peut-être pas très claire, et c'est donc pour cela que je pense que le shéma me serait d'une grande utilité.
Salut,
Le principe est simple, mais ça dépend de la strcuture de ton noeud et de
comment tu gères le chainage des noeud.
Dans ce principe la racine n'a pas de frére, mais que des fils, et une feuille
n'a pas de fils : ça termine la récursivité.
Pour l'appel :
Habituellement une struture noeud au minimun possède les chainages suivant
-> noeud pere [nul pour la racine]
-> noeud premier fils [nul pour les feuilles]
-> noeud frère suivant [attention c'est pas une liste circulaire]
La boucle "pour tous les fils de noeud" devient :
A+, crabs
Le principe est simple, mais ça dépend de la strcuture de ton noeud et de
comment tu gères le chainage des noeud.
Dans ce principe la racine n'a pas de frére, mais que des fils, et une feuille
n'a pas de fils : ça termine la récursivité.
parcourir( noeud )
{
pour tous les fils de noeud :
parcourir( le fils courant )
}
Pour l'appel :
parcourir( racine )
Habituellement une struture noeud au minimun possède les chainages suivant
-> noeud pere [nul pour la racine]
-> noeud premier fils [nul pour les feuilles]
-> noeud frère suivant [attention c'est pas une liste circulaire]
La boucle "pour tous les fils de noeud" devient :
PROCEDURE parcourir( NOEUD n ) DEBUT NOEUD fils ; // Faire le traitement sur le noeud fils=n.fils TANT.QUE( fils <> NUL ) DEBUT APPELER parcourir(fils) ; fils = fils.frere ; FIN FIN
A+, crabs
Merci de ta réponse.
Comme déja précisé, je connais et le principe et le code puisque j'ai programmé une procédure récursive qui parcourt toute l'arborescence. C'est vraiment un shém (un dessin (;-) que je recherche. Ci d'ailleurs cela peut servir, voici le code que je cherche à présenter en organigramme.
Private Sub WriteChild(ByVal iNodeIndex As Integer)
'Ecriture des noeuds enfants dans la table. C'est une procédure récursive pour
'parcourir dans une boucle tous les noeuds enfants. Elle identifie l'index
'du noeud ayant les enfants.
Dim i As Integer
Dim iTempIndex As Integer
iTempIndex = TreeView1.Nodes(iNodeIndex).Child.FirstSibling.Index
'Parcours tous les noeuds enfants d'un noeud parent (dans une boucle)
For i = 1 To TreeView1.Nodes(iNodeIndex).Children
rsNoeuds.AddNew
rsNoeuds("ID_NoeudParent") = TreeView1.Nodes(iTempIndex).Parent.Key
rsNoeuds("ID_Noeud") = TreeView1.Nodes(iTempIndex).Key
rsNoeuds("Nom_Noeud") = TreeView1.Nodes(iTempIndex).Text
rsNoeuds("Image") = TreeView1.Nodes(iTempIndex).Image
rsNoeuds("Selected_Image") = TreeView1.Nodes(iTempIndex).SelectedImage
rsNoeuds.Update
'Si le noeud en cours possède des noeuds enfants, la procédure fait appel à elle même (récurcivité)
If TreeView1.Nodes(iTempIndex).Children > 0 Then
WriteChild (iTempIndex)
End If
'Si ce n'est pas le dernier noeud enfant, on passe au noeud enfant suivant.
If i <> TreeView1.Nodes(iNodeIndex).Children Then
iTempIndex = TreeView1.Nodes(iTempIndex).Next.Index
End If
Next i
End Sub
Comme déja précisé, je connais et le principe et le code puisque j'ai programmé une procédure récursive qui parcourt toute l'arborescence. C'est vraiment un shém (un dessin (;-) que je recherche. Ci d'ailleurs cela peut servir, voici le code que je cherche à présenter en organigramme.
Private Sub WriteChild(ByVal iNodeIndex As Integer)
'Ecriture des noeuds enfants dans la table. C'est une procédure récursive pour
'parcourir dans une boucle tous les noeuds enfants. Elle identifie l'index
'du noeud ayant les enfants.
Dim i As Integer
Dim iTempIndex As Integer
iTempIndex = TreeView1.Nodes(iNodeIndex).Child.FirstSibling.Index
'Parcours tous les noeuds enfants d'un noeud parent (dans une boucle)
For i = 1 To TreeView1.Nodes(iNodeIndex).Children
rsNoeuds.AddNew
rsNoeuds("ID_NoeudParent") = TreeView1.Nodes(iTempIndex).Parent.Key
rsNoeuds("ID_Noeud") = TreeView1.Nodes(iTempIndex).Key
rsNoeuds("Nom_Noeud") = TreeView1.Nodes(iTempIndex).Text
rsNoeuds("Image") = TreeView1.Nodes(iTempIndex).Image
rsNoeuds("Selected_Image") = TreeView1.Nodes(iTempIndex).SelectedImage
rsNoeuds.Update
'Si le noeud en cours possède des noeuds enfants, la procédure fait appel à elle même (récurcivité)
If TreeView1.Nodes(iTempIndex).Children > 0 Then
WriteChild (iTempIndex)
End If
'Si ce n'est pas le dernier noeud enfant, on passe au noeud enfant suivant.
If i <> TreeView1.Nodes(iNodeIndex).Children Then
iTempIndex = TreeView1.Nodes(iTempIndex).Next.Index
End If
Next i
End Sub
Un shéma sur la recursivité, c'est comme l'image que l'on voit sur une télé
alors qu'on est en train de la filmer. Rien de simple...
Par contre tu peux proposer un dessin de ton arbre et montrer sur le shéma
la suite des appels et quand tu rencontres les phases principales de ton algo.
De plus tu numérote bien les étapes dans leur sens de déroulement et comme
tu remplis 'rsNoeuds'.
alors qu'on est en train de la filmer. Rien de simple...
Par contre tu peux proposer un dessin de ton arbre et montrer sur le shéma
la suite des appels et quand tu rencontres les phases principales de ton algo.
De plus tu numérote bien les étapes dans leur sens de déroulement et comme
tu remplis 'rsNoeuds'.