IF111 - Algorithmes et structures de donn´ees-Graphes-abres
Exercice 1
1. Dessiner l’arborescence binaire ayant 10 noeuds {0, 1, 2, ..., 9}, telle que le parcours infixe et le parcours
postfixe de cette arborescence produisent respectivement les suites suivantes : 9, 3, 1, 0, 4, 2, 6, 7, 8, 5
(infixe) et 9, 1, 4, 0, 3, 6, 7, 5, 8, 2 (postfixe). Dire quel est le raisonnement utilis´e pour arriver `a la
solution.
Dire quelle est la hauteur du noeud 1 et 2 dans l’arborescence dessin´ee et quelle est la hauteur de
l’arborescence elle mˆeme. Enfin dire si l’arborescence dessin´ee est compl`ete.
2. Ecrire la suite d’entiers obtenue par le parcours pr´efixe de l’arborescence obtenue dans la question prece-
dente. Ecrire un algorithme recursif qui prend en entr´ee une arborescence et affiche les valeurs des nœuds
dans l’ordre du parcours pr´efixe de l’arborescence. L’ algorithme utilisera les fonctions estV ide(T) qui
retourne vrai si l’arborescence Test vide, val(T) qui retourne l’´etiquette de la racine d’un arbre non vide
et filsgauche(T) et filsdroite(T) qui retournent respectivement la sous-arbre gauche et le sous-arbre
droit de l’arborescence T.
Exercice 2
On veut concevoir des algorithmes r´ecursifs pour calculer des propri´et´es d’un arbre binaire donn´e en entr´ee. Les
algorithmes peuvent utiliser les fonctions estV ide(T) qui retourne vrai si l’arborescence Test vide, filsgauche(T)
et filsdroit(T) qui retournent respectivement le sous-arbre gauche et le sous-arbre droit de l’arbre T. D´ecrire
l’id´ee des algorithmes et en ´ecrire le pseudo-code.
1. Concevoir un algorithme r´ecursif, nomm´e Hauteur(T), qui calcul la hauteur d’une arborescence binaire
Tdonn´ee en entr´ee. Si l’arborescence est vide l’algorithme retournera −1. L’algorithme s’appuie sur la
technique diviser pour r´egner.
2. Concevoir un algorithme r´ecursif qui calcule le nombre de feuilles d’une arborescence binaire donn´ee en
entr´ee.
Exercice 3
On consid`ere le graphe G d´efini par la matrice d’adjacence suivante :
00001000
00000011
00001100
00000000
10100100
00101000
01000001
01000010
1. Dessinez ce graphe.
2. Un graphe est dit connexe si pour toute paire de sommets s, t, il existe un chemin allant de s `a t. Indiquez
si le graphe pr´ec´edant est connexe. Ecrivez un algorithme qui teste si un graphe non orient´e G(V, E) est
connexe ou non.
3. Une composante connexe d’un graphe est un sous-graphe connexe tel que chaque sommet de la composante
connexe n’est reli´e `a aucun sommet n’appartenant pas `a cette composante connexe. Donnez la liste des
composantes connexes du graphe G. 1