Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
L2 Informatique
Semestre 2
Arbres binaires
Dans ce TD, qui durera plusieurs séances, on va construire pas à pas nos premières fonctions sur les
arbres.
Pendant les TD, on s’attachera, autant que possible, à écrire du pseudo-code plutôt que du code C,
puisque l’on aura déjà l’occasion d’écrire du code C en TP. Toutefois, de temps à autre, on vous donnera
les types C sur lesquels on travaille en fait : ces informations ont pour but de vous dire comment on
pourrait manipuler les objets (arbres ou autres) si on devait écrire du code C, mais en pratique il sera
important d’écrire le moins de code C possible, au profit du pseudo-code. Par ailleurs, s’il est possible de
réutiliser, dans une question, des bouts de code écrits dans une question précédente, il sera important de
le faire.
Z C
X E G
H N J E D
1. Vocabulaire — Dans cet exercice, on s’intéressera exclusivement à l’exemple de l’arbre donné en Figure 1.
a. Donner les étiquettes
— de la racine ;
— des feuilles ;
— des nœuds de hauteur 1 ;
— des nœuds de profondeur 3 ;
— des nœuds sur le chemin A → J.
b. Donner le nombre de nœuds, le nombre de nœuds internes et le nombre de feuilles.
c. Donner les étiquettes de nœuds visités lors d’un parcours en profondeur avec traitement :
— préfixe (on affiche la racine, puis le sous-arbre gauche, puis le sous-arbre droit) ;
— infixe (on affiche le sous-arbre gauche, puis la racine, puis le sous-arbre droit) ;
— suffixe (on affiche le sous-arbre gauche, puis le sous-arbre droit, puis la racine).
d. Donner les étiquettes des nœuds visités lors d’un parcours en largeur.
e. On rappelle que la hauteur d’un arbre est le nombre maximum de liens entre la racine et une feuille.
Donner la hauteur d’un arbre réduit à une seule feuille, puis d’un arbre vide, et enfin de l’arbre
ci-dessus.
Quelle est la hauteur du nœud d’étiquette Z ?
1
2. Programmation — Dans cet exercice et les exercices qui suivront, y compris lors des prochaines séances
de TD, on utilisera les types C suivants.
1 typedef struct noeud {
2 int valeur ; /* é tiquette */
3 struct noeud * fg ; /* fils gauche */
4 struct noeud * fd ; /* fils droit */
5 } Noeud , * Arbre ;