Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/06/2006, à 17:34

Premium

Parcours en largeur

Salut,

quel est l'algo pour le parcours en largeur d'un arbre binaire?

Merci

Dernière modification par Premium (Le 12/06/2006, à 19:17)

Hors ligne

#2 Le 12/06/2006, à 21:22

gene69

Re : Parcours en largeur

héhéhé

encore toi! Courage même si la température monte, faut pas baisser les bras.

imagine un arbre


A                            20
                       /           \
B                    10             30
                    /     \        /  \
C                 5       15           31
                 / \     /  \         /  \
D                           14           32

que donne le parcour en largeur?
(A) 20 (B) 10 30 (C)5 15 31 (D) 14 32

Que se passe-t'il? Par récurence ou itération ça ne marche pas. La difficulté est de garder le pointeur sur un noeud jusqu'à ce qu'on s'interesse au fils du noeud. Parce que par rapport à un parcours infixe par exemple le parcour en largeur donne l'impression de "remonter" dans l'arbre, or c'est impossible tu le sais.

l'astuce que j'avais deviné tout seul le jour ou le prof nous a présenté ce parcours (merci pour les fleurs) est d'utiliser une file. (Comme les files d'attentes, premier arrivé = premier parti)

que fait t'on en vrai:
j'enfile 20,
je défile 20, et j'enfile ses fils 10 et 30,
je défile 10 j'enfile 5 et 15, je défile 30 j'enfile RIEN et 31
je défile 5 et j'enfile RIEN et RIEN etc.

graphe* tmp,suivant;
graphe* g = uneRacineArbre();
file* f = creerNouvelleFile();
compteur registre= mettreAZero(creerNouveauCompteur());

enfiler(g,f);

tant que etreNonVide(f);
         tmp = defiler(f)
         tant que   suivant = successeur(tmp) et alors etreValable(suivant);
                         enfiler(suivant,f);
         ecrireSortie(tmp);
         incrementer(registre);
renvoyer(registre);

c'est clair comme ça?

Dernière modification par gene69 (Le 12/06/2006, à 21:31)


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#3 Le 12/06/2006, à 21:25

gene69

Re : Parcours en largeur

pour la traduction en java je te laisse faire.

On peut pas faire les exercices à ta place quand même.


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne