Algo d parcours d'un arbre binaire
Fermé
fatine
-
28 juin 2001 à 14:47
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 15 juin 2011 à 07:56
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 15 juin 2011 à 07:56
A voir également:
- Algo d parcours d'un arbre binaire
- Codage binaire - Guide
- Mes parcours google - Guide
- Arbre généalogique famille michelin - Télécharger - Généalogie
- Pour participer à un jeu, josé doit donner un nom de code à chacun des membres de son équipe. il veut utiliser le code binaire. il essaie avec seulement 3 bits. mais cela ne suffit pas. combien de membres n'auront pas de code ? ✓ - Forum Powerpoint
- Alphabet binaire ✓ - Forum Programmation
4 réponses
Trois possibilités de parcours (je ne me rapelle plus des noms):
- la pré-je-sais-plus-quoi:
tu traite le noeud,
tu fais la partie gauche,
tu fais la partie droite,
- la je-sais-plus-quoi:
tu fais la partie gauche,
tu traite le noeud,
tu fais la partie droite,
- la post-je-sais-plus-quoi:
tu fais la partie gauche,
tu fais la partie droite,
tu traite le noeud.
Voici l'algo:
fonction sag(): renvoie le sous-arbre gauche
fonction sad(): renvoie le sous-arbre droit
fonction parcourir(unarbre: type_arbre):
var unnoeud: type_noeud
{1} traiter(unnoeud);
si sag(unarbre) est_non_vide
alors parcourir(sag(unarbre))
finsi
{2} traiter(unnoeud);
si sad(unarbre) est_non_vide
alors parcourir(sad(unarbre))
finsi
{3} traiter(unnoeud);
fin parcourir
Selon si tu mets le traiter(unnoeud) en 1 ou en 2 ou en 3, ça donne pas la même chose (fais un dessin).
Info Man
- la pré-je-sais-plus-quoi:
tu traite le noeud,
tu fais la partie gauche,
tu fais la partie droite,
- la je-sais-plus-quoi:
tu fais la partie gauche,
tu traite le noeud,
tu fais la partie droite,
- la post-je-sais-plus-quoi:
tu fais la partie gauche,
tu fais la partie droite,
tu traite le noeud.
Voici l'algo:
fonction sag(): renvoie le sous-arbre gauche
fonction sad(): renvoie le sous-arbre droit
fonction parcourir(unarbre: type_arbre):
var unnoeud: type_noeud
{1} traiter(unnoeud);
si sag(unarbre) est_non_vide
alors parcourir(sag(unarbre))
finsi
{2} traiter(unnoeud);
si sad(unarbre) est_non_vide
alors parcourir(sad(unarbre))
finsi
{3} traiter(unnoeud);
fin parcourir
Selon si tu mets le traiter(unnoeud) en 1 ou en 2 ou en 3, ça donne pas la même chose (fais un dessin).
Info Man
Pour tous ceux qui recherches des sources pour le parcours d'un arbre en C.
Ce sont des procédure que je dois rendre à mon professeur ce vendredi ^_^.
On est sensé le faire via une liste mais ceci ce n'est que de l'affichage, donc si vous effectuez le parcours de l'arbre pour récupérer les données, utilisez les listes. Je posterai plus tard mes procédures de parcours utilisant les listes (je les ferai ce soir).
je peux vous passez mes procédures. Voici 3 méthodes pour parcourir un arbre binaire:
//***Parcours préfixé (première rencontre)
void proc_parcours_prefixe(arbre mon_arbre)
{
if(mon_arbre != NULL)
{
//mon_arbre = func_racine_arbre(mon_arbre);
printf("%d\t",mon_arbre->val);
if(mon_arbre->gauche != NULL)
{
proc_parcours_prefixe(mon_arbre->gauche);
}
if(mon_arbre->droite != NULL)
{
proc_parcours_prefixe(mon_arbre->droite);
}
}
else
{
printf("\nCet arbre est vide\n");
}
}
//***Parcours suffixé (dernière rencontre)
void proc_parcours_suffixe(arbre mon_arbre)
{
if(mon_arbre != NULL)
{
if(mon_arbre->gauche != NULL)
{
proc_parcours_suffixe(mon_arbre->gauche);
}
if(mon_arbre->droite != NULL)
{
proc_parcours_suffixe(mon_arbre->droite);
}
printf("%d\t",mon_arbre->val);
}
else
{
printf("\nCet arbre est vide\n");
}
}
//***Parcours symétrique (deuxième rencontre)
void proc_parcours_symetrique(arbre mon_arbre)
{
if(mon_arbre != NULL)
{
if(mon_arbre->gauche != NULL)
{
proc_parcours_symetrique(mon_arbre->gauche);
}
printf("%d\t",mon_arbre->val);
if(mon_arbre->droite != NULL)
{
proc_parcours_symetrique(mon_arbre->droite);
}
}
else
{
printf("\nCet arbre est vide\n");
}
}
Ce sont des procédure que je dois rendre à mon professeur ce vendredi ^_^.
On est sensé le faire via une liste mais ceci ce n'est que de l'affichage, donc si vous effectuez le parcours de l'arbre pour récupérer les données, utilisez les listes. Je posterai plus tard mes procédures de parcours utilisant les listes (je les ferai ce soir).
je peux vous passez mes procédures. Voici 3 méthodes pour parcourir un arbre binaire:
//***Parcours préfixé (première rencontre)
void proc_parcours_prefixe(arbre mon_arbre)
{
if(mon_arbre != NULL)
{
//mon_arbre = func_racine_arbre(mon_arbre);
printf("%d\t",mon_arbre->val);
if(mon_arbre->gauche != NULL)
{
proc_parcours_prefixe(mon_arbre->gauche);
}
if(mon_arbre->droite != NULL)
{
proc_parcours_prefixe(mon_arbre->droite);
}
}
else
{
printf("\nCet arbre est vide\n");
}
}
//***Parcours suffixé (dernière rencontre)
void proc_parcours_suffixe(arbre mon_arbre)
{
if(mon_arbre != NULL)
{
if(mon_arbre->gauche != NULL)
{
proc_parcours_suffixe(mon_arbre->gauche);
}
if(mon_arbre->droite != NULL)
{
proc_parcours_suffixe(mon_arbre->droite);
}
printf("%d\t",mon_arbre->val);
}
else
{
printf("\nCet arbre est vide\n");
}
}
//***Parcours symétrique (deuxième rencontre)
void proc_parcours_symetrique(arbre mon_arbre)
{
if(mon_arbre != NULL)
{
if(mon_arbre->gauche != NULL)
{
proc_parcours_symetrique(mon_arbre->gauche);
}
printf("%d\t",mon_arbre->val);
if(mon_arbre->droite != NULL)
{
proc_parcours_symetrique(mon_arbre->droite);
}
}
else
{
printf("\nCet arbre est vide\n");
}
}
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
15 juin 2011 à 07:56
15 juin 2011 à 07:56
On ne manipule pas les arbres itérativement, c'est pas fait pour...
21 févr. 2007 à 23:40
(2) sinon si (il y a une arête à droite et on ne l'a jamais descendue) on la
descend
(3) sinon si (on n'est pas à la racine) on remonte l'arête
(4) sinon on termine