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