• Aucun résultat trouvé

TD2-9

N/A
N/A
Protected

Academic year: 2022

Partager "TD2-9"

Copied!
2
0
0

Texte intégral

(1)

Université Joseph Fourier UFR IM

2

A

L3 Informatique Année 20132014

UE ALGO5 TD2 Séance 9 : Implémentation d'un type abstrait Arbre binaire On donne un exemple de spécication d'un type abstrait Arbre construit sur un type Élément.

ArbreVide

{ paramètres : aucun

valeur de retour : un Arbre description : renvoie un Arbre vide eets de bord : aucun }

NouveauN÷ud

{ paramètres : un Arbre G, un Élément x, un Arbre D (données) valeur de retour : un Arbre

description : renvoie un Arbre constitué du n÷ud (G, x, D) eets de bord : un nouveau n÷ud a été créé }

InsérerGauche

{ paramètres : un Arbre A (donnée-résultat), un Arbre G (donnée) valeur de retour : aucune

description : A doit être non vide, supprime le ls gauche de A et le remplace par l'Arbre G.

eets de bord : l'Arbre A est modié, son ancien ls gauche est détruit } InsérerDroit

{ paramètres : un Arbre A (donnée-résultat), un Arbre D (donnée) valeur de retour : aucune

description : A doit être non vide, supprime le ls droit de A et le remplace par l'Arbre D.

eets de bord : l'Arbre A est modié, son ancien ls droit est détruit } EstVide

{ paramètres : un Arbre A (donnée) valeur de retour : un booléen

description : vaut vrai ssi A est un Arbre vide eets de bord : aucun }

Elem{ paramètres : un Arbre A (donnée) valeur de retour : un Élément

description : A doit être non vide, renvoie l'élément associé à la racine de A eets de bord : aucun }

FDroit

{ paramètres : un Arbre A (donnée) valeur de retour : un Arbre

description : A doit être non vide, renvoie le ls droit associé à la racine de A eets de bord : aucun }

FGauche

{ paramètres : un Arbre A (donnée) valeur de retour : un Arbre

description : A doit être non vide, renvoie le ls gauche associé à la racine de A eets de bord : aucun }

Libérer

{ paramètres : un Arbre A (donnée) valeur de retour : aucune

description : A doit être non vide, libère la mémoire associée au n÷ud racine de A eets de bord : La racine de A est détruite, les ls gauche et droit sont inchangés }

(2)

Utilisation du type abstrait Arbre

1. Dessiner un arbre binaire de hauteur 3 comportant 5 feuilles En n'utilisant que des primitives du type abstrait :

2. Écrivez une séquence d'instructions permettant de construire l'arbre binaire proposé à la question 1.

3. Écrivez une fonction qui prend en paramètre un arbre binaire et renvoie le nombre de feuilles de cet arbre.

4. Écrivez une fonction qui prend en paramètre un arbre binaire et renvoie la hauteur de cet arbre.

5. Écrivez une procédure permettant de supprimer un arbre entier, en libérant la mémoire de chacun de ses n÷uds.

Implémentation du type abstrait Arbre

6. Proposez une implémentation du type Arbre à l'aide d'un tableau de taille N alloué statiquement (on suppose donc ici que le nombre de neuds de tout arbre binaire sera limité à N). Écrivez le code de chaque primitive pour cette implémentation.

7. Proposez maintenant une implémentation du type Arbre à l'aide de cellules mémoires allouées dynamiquement

et chaînées par pointeurs.

Références

Documents relatifs

Dans le cas de points p-q-i alignés (orientation 0), le point le plus éloigné de P est conservé (dans le tableau donné en exemple ci-dessous, c'est la différence des distances PQ

Chercher sur Internet l‘algorithme DSW (c’est un algorithme qui prend en entrée un arbre de recherche binaire afin de réaliser son équilibrage) et l’algorithme de

Les pre- mières division d’un arbre sont utilisées pour construire une variable synthétique intégrée à une régression logistique afin de sélectionner les quelques

Proposez une implémentation du type Arbre à l'aide d'un tableau de taille N alloué statiquement (on suppose donc ici que le nombre de n÷uds de tout arbre binaire sera limité à

Si l'arbre est binaire complet, tous les n÷uds sont contigus (et stockés dans la partie gauche du tableau).. Si l'arbre n'est pas complet il faut

// renvoie un arbre de racine e ayant l et r pour fils gauche et droit Element root(BTree bt); // renvoie l’´ el´ ement ` a la racine de l’arbre BTree leftChild(BTree bt); // renvoie

L’opération estVide teste si la file avec priorité est vide ou pas, l’opération ajouter insère dans la file un nouvel élément avec sa priorité, l’opération premier

Écrivez maintenant la méthode de tri fusion, qui divise la liste en deux listes de taille égale, trie les sous-listes récursivement puis les fusionnent avec la méthode