Rechercher : dans
Par :

Algo d parcours d'un arbre binaire

Dernière réponse le 25 sep 2009 à 04:17:50 fatine, le 28 jun 2001 à 14:47:42 
 Signaler ce message aux modérateurs

Je souhait avoir l'algorithme du parcours d'un arbre binaire...
je le cherche depuit lontemps ...j'ai toujours pas de répense...

Meilleures réponses pour « algo d parcours d'un arbre binaire » dans :
Parser un fichier binaire en PHP VoirSupposons que vous ayez enregistré des données binaires dans un fichier, c'est-à-dire un enregistrement brut qui n'est pas traduit en texte. C'est une chose que l'on fait couramment avec certains langages de bas niveau comme le C ou le...
Télécharger Binary Clock Screensaver VoirLe langage binaire est encore mal connu de tous. Cet éditeur a trouvé le moyen d'allier ce langage avec un écran de veille. Binary Clock Screensaver est un écran de veille basé sur une horloge binaire. L'interface repose sur un fond noir et des leds...
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...
Le codage binaire VoirPrésentation du binaire Bit Poids des bits Conversions Octet KiloOctets, MégaOctets Opérations en binaire Addition binaire Multiplication binaire Présentation du binaire Vers la fin des années 30, Claude Shannon démontra qu'à l'aide...

1

Lily, le 28 jun 2001 à 14:51:01

Parcours d'un fichier binaire?

Répondre à Lily

2

Info Man, le 28 jun 2001 à 16:14:05

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

Répondre à Info Man

3

babs, le 21 fév 2007 à 23:40:37
  • +1

(1) si (il y a une arête à gauche et on ne l'a jamais descendue) on la descend
(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

Répondre à babs

4

 Kyurix, le 25 sep 2009 à 04:17:50

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");
}
}

Répondre à Kyurix
Collection CommentÇaMarche.net