But : Aborder une structure de données arborescente. Définir et implanter un TAD <<arbre binaire>>. Écrire des fonctions manipulant des arbres binaires.
Définition : Un arbre binaire est :
On appelle racine d'un arbre le noeud unique qui n'est fils d'aucun autre noeud.
Si les deux fils d'un noeud sont des arbres vides alors on dit que ce noeud est une feuille.
Exemple 1 : arbre binaire où les valeurs sont des entiers :
On définit le TAD arbres binaires d'entiers naturels, Arbre, par :
les fonctions génératrices :
1) Définir en scheme les fonctions permettant d'implanter le TAD arbres binaires d'entiers en utilisant les listes.
Dans la suite du TP, toutes les fonctions manipulant des arbres doivent être indépendantes de l'implantation du TAD, on écrira ces fonctions en utilisant les fonctions génératrices et caractéristiques du TAD Arbre .
2) Définir en scheme les fonctions :
3) Parcours d'un arbre en profondeur
Un arbre est un structure contenant un ensemble de données. Pour utiliser ces données, il faut parcourir l'arbre.
Parcourir un arbre en profondeur consiste à passer ses noeuds en revue en commençant toujours par le même fils et en descendant le plus profondément possible dans l'arbre. Lorsqu'on arrive à un noeud vide, on remonte jusqu'au noeud supérieur et on continu le parcours à partir du fils encore inexploré.
Cela peut paraître compliqué, mais la structure récursive des arbres nous permet d'utiliser la récursivité pour les manipuler. Le principe général est le suivant : étant donnée un fonction f à appliquer sur les valeurs d'un arbre A, si A est vide alors le résultat est immédiat, sinon, on applique d'abord la fonction f à tous les noeuds du fils gauche de A, ce qui donne un résultat R1, puis à tous les noeuds du fils droit, ce qui donne un résultat R2 et on calcul le résultat pour l'arbre A en fonction de la valeur de sa racine et des résultats R1 et R2.
En utilisant ce principe, écrire les fonctions suivantes :
4) Arbres binaires ordonnées
On dit qu'un arbre binaire A est ordonnée quand, pour chacun de ses noeuds N, la valeur de N est supérieure à la valeur maximale présente dans son fils gauche et inférieure à la valeur minimale présente dans son fils droit.
Le premier exemple d'arbre n'est un arbre ordonné mais le suivant en est un.
Exemple 2 : arbre binaire ordonné.
Écrire les fonctions suivantes qui opèrent sur des arbre binaires ordonnés d'entiers :
Par exemple, l'insertion de la valeur 30, puis de la valeur 11 dans l'arbre de l'exemple 2 rend successivment les arbres suivants :