Algorithmique & programmation
Chapitre 5 : Arbres Parcours
Parcours d’un arbre binaire
!! Trois types de parcours
"! selon l’ordre d’examen de racine, fils gauche et
fils droit
A"
B" C"
Chapitre 5.2 3
Parcours d’un arbre binaire
!! Parcours préfixé (ou en préordre)
"! traiter la racine
"! parcourir le sous-arbre gauche
"! parcourir le sous-arbre droit
!! Exemple :
A"
B" C"
F" H" D" E"
I" R"
T"
P" M"
1"
2"
3"
4" 5"
6"
7"
8"
9"
10" 11"
12"
A B F P M H T C D I R E
Parcours préfixé d’un arbre binaire
procédure préfixé (d racine : pointeur) ;!
spécification {!}! {parcours préfixé de racine+}!
debproc!
!si racine ! nil alors!
! !traiter (racine) ;!
! !préfixé (racine".gauche) ;!
! !préfixé (racine".droite) ;!
!finsi ;!
finproc ;!
Chapitre 5.2 5
Parcours préfixé d’un arbre binaire ( ada )
procedure préfixé (racine : in Ta_Noeud) is --spec { } ! {parcours préfixé de racine+} begin
if racine /= null then traiter (racine) ;
préfixé (racine.all.gauche) ; préfixé (racine.all.droite) ; end if;
end préfixé ;
Parcours d’un arbre binaire
!! Parcours infixé (ou projectif ou symétrique)
"! parcourir le sous-arbre gauche
"! traiter la racine
"! parcourir le sous-arbre droit
A"
B" C"
7"
4" 11"
Chapitre 5.2 7
Parcours infixé d’un arbre binaire
procédure infixé (d racine : pointeur) ;!
spécification {}! {parcours infixé de racine+}"
debproc!
!si racine " nil alors!
! !infixé (racine".gauche) ;!
! !traiter (racine) ;!
! !infixé (racine".droite) ;!
!finsi ;!
finproc ;
Parcours infixé d’un arbre binaire ( ada )
procedure infixé(racine : in Ta_Noeud) is --spec { } ! {parcours préfixé de racine+} begin
if racine /= null then
préfixé (racine.all.gauche) ; traiter (racine) ;
préfixé (racine.all.droite) ; end if;
end infixé ;
Chapitre 5.2 9
Parcours d’un arbre binaire
!! Parcours postfixé (ou terminal)
"! parcourir le sous-arbre gauche
"! parcourir le sous-arbre droit
"! traiter la racine
!! Exemple :
A"
B" C"
F" H" D" E"
I" R"
T"
P" M"
12"
6"
3"
1" 2"
5"
4"
11"
9"
7" 8"
10"
P M F T H B I R D E C A
Parcours postfixé d’un arbre binaire
procédure postfixé (d racine : pointeur) ;!
spécification {!}! {parcours postfixé de racine+}"
debproc!
!si racine " nil alors!
! !postfixé (racine".gauche) ;!
! !postfixé (racine".droite) ;!
! !traiter (racine) ;!
!finsi ;!
Chapitre 5.2 11
Parcours postfixé d’un arbre binaire ( ada )
procedure postfixé (racine : in Ta_Noeud) is --spec { } ! {parcours préfixé de racine+} begin
if racine /= null then
préfixé (racine.all.gauche) ; préfixé (racine.all.droite) ; traiter (racine) ;
end if;
end postfixé ;