ALGORITHME ET STRUCTURES DE DONNÉES II LES ARBRES Dr. Jihène Tounsi ISG de Sousse Site web http://www.jihenetounsi.com Email: [email protected] Cours développé par Dr. Jihène Tounsi Qu’est ce qu’un Arbre (1/2) Les files, les piles, les listes ainsi que les tableaux sont des structures linéaires. Les arbres sont des structures complexes non linéaires A, B, C, G, D, E et F sont des nœuds A donne accès à B et C. B donne accès à G, D et E. C donne accès à F. A B G D C E F Cours développé par Dr. Jihène Tounsi Qu’est ce qu’un Arbre (2/2) Un arbre possède une seule racine « A » Un nœud possède 0…n Enfants Un nœud sans enfants s’appelle une feuille A est le père de B et C B est lui aussi le père de G, D et E A G, D et E sont les fils de B … B G D C E F Les arbres Binaires Un nœud ne peut donner naissance qu’au maximum 2 Nœuds Fils gauche Fils droit Un arbre binaire est composé de plusieurs sous arbres Cours développé par Dr. Jihène Tounsi Implémentation de l’Arbre Le nombre des éléments à stocker n’est pas connu à l’avance. Implémentation à chaînage simple Utilisation d’un pointeur pour le fils gauche. Utilisation d’un pointeur pour le fils côté droit. Cours développé par Dr. Jihène Tounsi Structure de l’Arbre Un enregistrement pour la cellule ou l’élément de l’Arbre Donnée : l’élément à stocker. Filsgauche: Un pointeur sur le fils gauche. Filsdroit: Un pointeur sur le fils droit Un Pointeur sur la racine de l’arbre Cours développé par Dr. Jihène Tounsi Structure de l’Arbre Algorithme_ExempleArbre; Type Element = enregistrement Donnée:entier Filsgauche:^element FilsDroit: ^element Fin enregistrement Arbre= ^element Variables … Debut …. Fin. Cours développé par Dr. Jihène Tounsi Les opérations élémentaires : la création et la suppression CréerArbreVide(): Arbre CréerArbre (e:entier,FG:Arbre, FD:Arbre) : Arbre À partir de deux sous Arbres La valeur à insérer à la racine Retourne un arbre avec e la racine et FG et FD deux pointeurs sur les fils. CréerFeuille(e:entier): Arbre Permet de créer une Feuille de l’arbre SupprimerArbre(a:Arbre) Supprime l’arbre dont la racine est fournie en paramètre. Cours développé par Dr. Jihène Tounsi Les opérations élémentaires : Vérification ArbreVide(A: Arbre):Booléan Permet de vérifier si l’arbre ou le sous arbre est vide. EstFeuille(a:^élément):booléan Permet de vérifier si un nœud de l’arbre est une feuille. Cours développé par Dr. Jihène Tounsi Les opérations élémentaires : Accès Racine(a:Arbre):entier Permet FilsGauche(a:Arbre):^element (équivalent à Arbre) Permet de retourner la valeur stockée à la racine de retourner le pointeur sur le Fils gauche FilsDroit(a:Arbre):^element Permet de retourner le pointeur sur le Fils droit Exercice Écrire un algorithme qui permet de créer l’arbre binaire de l’exemple Créer une fonction qui permet de rechercher un élément dans un arbre 34 28 23 18 21 14 Cours développé par Dr. Jihène Tounsi Cours développé par Dr. Jihène Tounsi Recherche d’un élément Algorithme_ExempleArbre; Type Element = enregistrement Donnée:entier Filsgauche:^element FilsDroit: ^element Fin enregistrement Arbre= ^element Fonction Recherche(e:entier, a:Arbre):booléen //Arbre Vide //élément recherché à la racine de l’arbre //Recherche dans le fils gauche puis le fils droit Fin Fonction. Variables … Debut …. Fin. Cours développé par Dr. Jihène Tounsi Recherche d’un élément Fonction Recherche(e:entier, a:Arbre):booléen Si ArbreVide(a) alors Retourner Faux Sinon Si (Racine (a)=e) alors Retourner Vrai Sinon Retourner (Recherche(e, FilsGauche(a)) ou Recherche(e,FilsDroit(a)) )a Fin Si Fin Si Fin Fonction. Fin du chapitre 5…