1 Affichage 2 Construction 3 Taille 4 Feuille

Transcription

1 Affichage 2 Construction 3 Taille 4 Feuille
Algorithmique
LS3 Harmonisation
UFR d'IEEA Université Lille 1
20102011
TP : Arbres Binaires
Dans ce TP vous pouvez utiliser le module Arbre donné sur le portail ainsi que le module
Stack de caml dont les primitives sont rappelées dans le chier Stack.txt.
1 Achage
Ecrire une procédure récursive aff qui ache un arbre binaire sous la forme (racine ;gauche ;droit)
ce qui donne (1 ;(2 ;(4 ; ;) ;) ;(3 ;(5 ; ;) ;(6 ; ;))) pour l'arbre suivant :
Q1 .
1
2
3
5
4
6
Ecrire une nouvelle procédure récursive affFeuille qui ache un arbre binaire sous la
forme (racine ;gauche ;droit) mais qui ache les feuilles simplement sous la forme racine, ce
qui donne (1 ;(2 ;4 ;) ;(3 ;5 ;6)) pour l'arbre précédent.
Q2 .
Encapsulez la procédure affFeuille dans la procédure afficher qui ache l'arbre passé
en paramètre puis passe à la ligne.
Q3 .
2 Construction
Ecrire une fonction récursive arbreComplet qui prend en paramètre deux entiers h et r et
retourne un arbre binaire complet de hauteur h dont la racine à la valeur r.
On souhaite construire un arbre binaire complet dont tous les noeuds ont une valeur diérente,
il faut donc bien rééchir à la valeur eective à donner au paramètre r lors des appels récursifs.
Q4 .
3 Taille
Ecrire une fonction récursive tailleR qui retourne le nombre de noeuds de l'arbre passé
en paramètre.
Q5 .
En utilisant une pile d'arbre, écrivez la fonction itérative tailleI qui retourne le nombre
de noeuds de l'arbre passé en paramètre.
Q6 .
Testez vos fonctions à l'aide de la fonction arbreComplet pour diérentes hauteurs d'arbre
comprises entre 0 et 25. Que constatez vous ?
Q7 .
4 Feuille
Ecrire une fonction estFeuille qui retourne vrai si l'arbre passé en paramètre est réduit
à une feuille et faux sinon.
Q8 .
Ecrire une fonction récursive NbFeuilleR qui retourne le nombre de feuilles de l'arbre passé
en paramètre.
Q9 .
1
Q10 . Ecrire une fonction itérative NbFeuilleI qui retourne le nombre de feuilles de l'arbre
passé en paramètre en utilisant une pile.
5 Hauteur
Ecrire une fonction itérative hauteur qui retourne la hauteur de l'arbre passé en paramètre.
Cette fonction pourra utiliser deux piles : une pile d'arbre ainsi qu'une pile d'entier. Indication :
la pile d'entiers sert à se souvenir de la profondeur des noeuds empilés sur l'autre pile.
Q11 .
2