SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
Les arbres
Les arbres binaires
Chapitre 8
Les arbres
Module 5: Algorithmique et programmation
Master Math´ematiques, Cryptologie et S´ecurit´e Informatique (MMCSI)
Texte
Texte
Texte
mlahby@gmail.com
28 d´ecembre 2014
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 1/ 55
Les arbres
Les arbres binaires
Plan
1 Les arbres
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
2 Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 2/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
D´efinition
Un arbre (tree en anglais) est une structure de donn´ees dynamique et non
lin´eaire.
Un arbre = ensemble de sommets ou noeuds tel que :
• ∃ un sommet unique appel´e racine r qui n’a pas de sup´erieur
• Tous les autres sommets sont atteints `a partir de r par une branche unique
Repr´esentattion graphique d’un arbre :
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 3/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Terminologie et propri`et´es
noeud = sommet
racine= noeud sans p`ere
Une feuille est un sommet qui n’a pas de fils.
branche : chemin entre 2 noeuds
p`ere d’un sommet : le pr´ed´ecesseur d’un sommet
fils d’un sommet : les successeurs d’un sommet
fr`eres : des sommets qui ont le mˆeme p`ere
Tout sommet x qui n’est pas la racine a :
• un unique parent, not´e parent(x) (appel´e p`ere parfois)
• 0 ou plusieurs fils. fils(x) d´esigne l’ensemble des fils de x
Si x et y sont des sommets tels que x soit sur le chemin de r `a y alors
• x est un ancˆetre de y
• y est un descendant de x
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 4/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Terminologie et propri`et´es
⇒Exemple :
1 est la racine
4,5,6,9,8 sont les feuilles
9 est un descendant de 3, mais pas de 2
3 est un ancˆetre de 9.
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 5/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Applications
Mod`ele pour les structures hi´erachis´ees :
• Arbre familial
• Arbre g´en´ealogique
• Structure de fichiers sous linux ou windows
• Organigramme d’une entreprise
Les expressions arithm´etiques
En linguistique et en compilation (arbres syntaxiques).
G´erer des bases de donn´ees
Utilisation pour des algorithmes de recherches rapides et
efficaces (tri par tas)
Algorithmique du texte (Huffamn, prefix-trees) : compression,
recherche de motifs, d´etection de r´ep´etitions, ...
Intelligence artificielle : arbres de d´ecision
Cryptoghraphie : algorithmes de recherche
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 6/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Applications
⇒ Exemple 1 : Arbre g´en´ealogique
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 7/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Applications
⇒ Exemple 2 : Organigramme d’entreprise
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 8/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Applications
⇒ Exemple 3 : Arborescence des fichiers sous linux
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 9/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Applications
⇒ Exemple 4 : Evaluation d’une expression alg´ebrique
L’´evaluation de l’expression arithm´etique x + y.(u + x) − u/z est repr´esent´ee par
l’arbre ci-dessous :
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 10/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Applications
⇒ Exemple 5 : Arbre syntaxique
l’arbre suivant repr´esente la structure de la phrase : for i :=1 to vmax do a :=a+i
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 11/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Applications
⇒ Exemple 6 : Intelligence artificielle : arbres de d´ecision
Mod´elisation et Cr´eation d’un Labyrinthe Rectangulaire en Deux Dimensions
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 12/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Mesures sur les arbres
Arit´e d’un arbre
L’arit´e d’un arbre repr´esente le nombre maximum de fils qu’il poss`ede pour un
sommet donn´e.
Un arbre dont les noeuds ne comporteront qu’au maximum n fils sera d’arit´e n.
On parlera alors d’arbre n-aire.
Il existe un cas particuli`erement utilis´e : c’est l’arbre binaire.
⇒ Exemple : Voici un arbre g´en´ealogique dont l’arit´e est 4
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 13/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Mesures sur les arbres
La profondeur d’un sommet
La profondeur (niveau) d’un noeud est la longueur de la branche depuis la racine
La profondeur d’un sommet est d´efinie r´ecursivement par :
• prof(v) = 0 si v est la racine
• prof(v) = prof(parent(v)) + 1
La hauteur d’un sommet
La hauteur d’un sommet est la plus grande profondeur d’une feuille du
sous-arbre dont il est la racine
Autres mesures
La hauteur d’un arbre est la hauteur de sa racine
La taille d’un arbre est le nombre de ses sommets
Le degr´e d’un noeud est le nombre de fils que poss`ede ce noeud.
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 14/ 55
Les arbres
Les arbres binaires
D´efinition
Terminologie et propri`et´es
Applications
Mesures sur les arbres
Mesures sur les arbres
⇒Exemple :
2,3 sont `a la profondeur 1
4,5,6,7,8 sont `a la profondeur 2
La hauteur de 3 est 2, celle de 6 est 0, celle de 3 est 0, celle de 1 est 4
La hauteur de l’arbre est 5
La taille de l’arbre est 9
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 15/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
D´efinition des arbres binaires
D´efinition informelle
Dans un arbre binaire tout noeud a au plus deux fils
Un arbre binaire poss`ede exactement deux sous-arbres (´eventuellement vides)
D´efinition r´ecursive
Soit vide
Soit compos´e
• d’une racine r
• de 2 sous arbres binaires ABG et ABD disjoints
* ABG : sous Arbre Binaire Gauche
* ABD : sous Arbre Binaire Droit
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 16/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
La notion de noeud
D´efinition
Le noeud est le composant principal d’un arbre binaire
Un noeud est une structure qui comporte trois champs :
• Le champ valeur : il contient des informations sur l’´el´ement repr´esent´e
par la cellule ;
• Le champ ag : il repr´esente un pointeur qui contient l’adresse du
sous-arbre gauche
• Le champ ad : il repr´esente un pointeur qui contient l’adresse du
sous-arbre droit
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 17/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Repr´esentation graphique d’un arbre binaire
⇒D´efinition informelle
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 18/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Repr´esentation graphique d’un arbre binaire
⇒D´efinition r´ecursive
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 19/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbres binaires particuliers
Arbre binaire d´eg´en´er´e, filiforme : Chaque noeud poss`ede
exactement un fils
→ `a ´eviter
Arbre binaire complet (uniforme) : Chaque niveau est
compl`etement rempli
Cela signifie, tout sommet est soit une feuille au dernier
niveau, soit poss`ede exactement 2 fils
→ situation id´eale
Arbre binaire parfait (presque complet) : Tous les niveaux
sont compl`etement remplis sauf ´eventuellement le dernier et
dans ce cas les feuilles sont le plus `a gauche possible
Arbre binaire ´equilibr´e : La diff´erence de hauteur entre 2
fr`eres ne peut d´epasser 1
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 20/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbres binaires particuliers
Arbre Parfait → situation id´eale
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 21/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbres binaires particuliers
Arbre d´eg´en´er´e → Pire des situations
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 22/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbres binaires particuliers
Arbre presque parfait
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 23/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbres binaires particuliers
Arbre ´equilibr´e
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 24/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbre binaire avec deux pointeurs sur ABG et ABD
Un arbre binaire est soit :
• un pointeur sur le noeud racine (arbre non vide)
• le pointeur NULL (arbre vide)
Un noeud est une structure `a trois champs :
• Une ´etiquette (valeur)
• le sous-arbre gauche (ABG)
• le sous-arbre droit (ABD)
Avantages :
• D´efinition r´ecursive, simple `a programmer,
• la plus utilis´ee
Inconv´enients :
• consomme de la m´emoire dynamique
• Temps d’ex´ecution lent.
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 25/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbre binaire avec deux pointeurs sur ABG et ABD
D´efinition d’un arbre binaire
typedef int Element ;
/* D´efinition du type noeud d’un arbre binaire */
typedef struct noeud{
Element etiq ; /*le champ etiq peut avoir n’importe quel type*/
struct noeud *ag ; /*pointeur contenant l’adresse du ABG*/
struct noeud *ad ; /*pointeur contenant l’adresse du ABD*/
}Tnoeud ;
D´eclaration d’un arbre binaire
Pour d´eclarer une variable de type arbre, il suffit de d´eclarer un pointeur sur son
noeud racine
Exemple :
Tnoeud ∗ Arb
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 26/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbre binaire avec deux pointeurs sur ABG et ABD
⇒ Exemple :
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 27/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbre binaire avec un tableau
Un arbre binaire est une structure `a deux champs :
• Un tableau o`u sont m´emoris´es les noeuds
• Un entier qui donne l’indice de la racine dans le tableau
Un noeud est une structure `a trois champs :
• L’´etiquette du noeud
• L’indice de son fils gauche (ou 0 si pas de fils gauche)
• L’indice de son fils droit (ou 0 si pas de fils droit)
Inconv´enients :
• D´efinition non r´ecursive (arbre = sous-arbre)
• Utilis´ee uniquement si on traite un arbre unique
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 28/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbre binaire avec un tableau
D´efinition d’un arbre binaire
typedef int Element ;
/* D´efinition du type noeud d’un arbre binaire */
typedef struct noeud{
Element etiq ; /*le champ etiq peut avoir n’importe quel type*/
int fg ; /*indice du ABG*/
int fd ; /*indice du ABD*/
}NOEUD ;
/* D´efinition d’un arbre binaire */
typedef struct {
NOEUD tab[TAILLE MAX] ; /*Tableau contenant les noeuds de l’arbre*/
int racine ; /*indice de la racine*/
}Tnoeud ;
D´eclaration d’un arbre binaire
Pour d´eclarer un arbre, on utilise la syntaxe suivante :
Tnoeud ∗ arb;
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 29/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Arbre binaire avec un tableau
⇒ Exemple :
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 30/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Notion de parcours
D´efintion
Un parcours est un algorithme qui appelle une fonction, sur tous les noeuds (ou
les sous arbres) d’un arbre.
L’ordre sur les nœuds dans lequel la proc´edure est appel´ee doit ˆetre fix´e.
Il y a de nombreux choix possibles qui sont class´es en deux familles :
1 Les algroithmes de parcours en largeur.
2 Les algroithmes de parcours en profondeur.
Quelques exemples de fonctions
affichage,
liste des valeurs,
modification
etc.
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 31/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Parcours en profondeur
D´efintion
Un parcours est dit en profondeur lorsque, syst´ematiquement, si l’arbre n’est pas vide,
le parcours de l’un des deux sous-arbres est termin´e avant que ne commence celui de
l’autre.
Les diff´erents types
On distingue trois types :
1 Parcours pr´efixe (Racine Gauche Droit)
→ le noeud racine est trait´e au premier passage avant le parcours des
sous-arbres
2 Parcours infixe ou sym´etrique (Gauche Racine Droit)
→ le noeud racine est trait´e au second passage apr`es le parcours du
sous-arbre gauche et avant le parcours du sous-arbre droit
3 Parcours postfixe (Gauche Droit Racine )
→ le noeud racine est trait´e au dernier passage apr`es le parcours des
sous-arbres
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 32/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Parcours pr´efixe RGD
⇒Exemple :
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 33/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Algorithme de parcours pr´efixe RGD
Principe du parcours pr´efixe :
1 application de F `a la racine,
2 parcours pr´efixe du sous-arbre gauche,
3 parcours pr´efixe du sous-arbre droit
Algorithme :
Parcours(Tnoeud *A)
D´ebut
SI A est vide ALORS
terminaison(A)
SINON
traitement (A)
Parcours (ABG de A)
Parcours (ABD de A)
FSI
Fin
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 34/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Parcours infixe GRD
⇒Exemple :
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 35/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Algorithme de parcours infixe GRD
Principe du parcours infixe :
1 parcours infixe du sous-arbre gauche,
2 application de F `a la racine,
3 parcours infixe du sous-arbre droit
Algorithme :
Parcours(Tnoeud *A)
D´ebut
SI A est vide ALORS
terminaison(A)
SINON
Parcours (ABG de A)
traitement (A)
Parcours (ABD de A)
FSI
Fin
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 36/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Parcours postfixe GDR
⇒Exemple :
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 37/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Algorithme de parcours postfixe GDR
Principe du parcours postfixe :
1 parcours postfixe du sous-arbre gauche,
2 parcours postfixe du sous-arbre droit
3 application de F `a la racine,
Algorithme :
Parcours(Tnoeud *A)
D´ebut
SI A est vide ALORS
terminaison(A)
SINON
Parcours (ABG de A)
Parcours (ABD de A)
traitement (A)
FSI
Fin
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 38/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Parcours en largeur
D´efinition
Un parcours est dit en largeur lorsqu’il proc`ede en croissant selon
les niveaux.
Voici un parcours en largeur de gauche `a droite
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 39/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Algorithme de parcours en largeur
Id´ee : on remplace la pile d’appels par une file d’attente dans l’algorithme de parcours
pr´efixe
ParcoursEnLargeur (Tnoeud *A)
D´ebut
cr´eer une file vide F
SI A est non vide ALORS
Enfiler A dans F
Tant que (F non vide) faire
A < −− D´efiler(F)
traitement(A)
SI ABG de A non vide ALORS
Enfiler ABG de A dans F
FSI
SI ABD de A non vide ALORS
Enfiler ABD de A dans F
FSI
FinTQ
FSI
d´etruire F
Fin
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 40/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Cr´eer un arbre vide :Tnoeud *ArbreBinVide(void)
D´efinition de la fonction
Tnoeud *ArbreBinVide(void)
{
Tnoeud * A ;
A=NULL ;
return(A) ;
}
Remarque
⇒ On peut faire typedef Tnoeud * arbreBin, dans ce l’entˆete devient :
arbreBin ArbreBinVide(void)
{
arbreBin A ;
A=NULL ;
return(A) ;
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 41/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Tester si l’arbre binaire est vide : int EstVide(Tnoeud * A)
La fonction EstVide() teste si l’arbre est vide ou non,
elle renvoie 1 si elle est vide, et 0 sinon.
D´efinition de la fonction
int EstVide(Tnoeud * A)
{
if (A==NULL)
return 1 ;
else
return 0 ;
}
Autre m´ethode
arbreBin EstVide(arbreBin A)
{ if (A==NULL)
return 1 ;
else
return 0 ;
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 42/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Cr´eer un noeud : Tnoeud * CreerNoeud(Element e, Tnoeud *l, Tnoeud *r) ;
La fonction CreerNoeud renvoie un arbre binaire dont la racine est e, le fils
gauche est l et le fils droit r.
elle renvoie un message d’erreur s’il n’ y a pas assez d’espace.
D´efinition de la fonction
Tnoeud * CreerNoeud(Element e, Tnoeud *l, Tnoeud *r)
{Tnoeud *new ;
new=(Tnoeud*)malloc(sizof(Tnoeud)) ;
if (new==NULL)
{printf(”Allocation rat´ee !”) ;
exit(EXIT FAILURE) ;
}
else
{ new− >etiq=e ;
new− >fg=l ;
new− >fd=r ;
return new ;
}
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 43/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Cr´eer une feuille : Tnoeud * CreerFeuille(Element e) ;
La fonction CreerFeuille renvoie un arbre binaire dont la racine est e et les fils
gauche et droit sont vides.
D´efinition de la fonction
Tnoeud * CreerFeuille(Element e)
{
return CreerNoeud(e,ArbreBinVide(),ArbreBinVide()) ;
}
Une autre solution
arbreBin CreerFeuille(Element e)
{arbreBin new ;
new=(arbreBin)malloc(sizof(Tnoeud)) ;
new− >etiq=e ;
new− >fg=NULL ;
new− >fd=NULL ;
return new ;
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 44/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Valeur de la racine : Element ValRacine(Tnoeud * A) ;
La fonction ValRacine renvoie l’´el´ement `a la racine de l’arbre A s’il n’est pas
vide.
Elle provoque une erreur si bt est vide.
D´efinition de la fonction
Element ValRacine(Tnoeud * A)
{
if (EstVide(A))
{
printf(”Pas de noeud `a la racine d’un arbre vide ! ! !”) ;
exit(EXIT FAILURE) ;
}
else
{
return (A− >etiq) ;
}
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 45/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Adresse du fils gauche :Tnoeud * FilsGauche(Tnoeud *A) ;
La fonction FilsGauche renvoie l’adresse du fils gauche de A s’il n’est pas vide.
Elle provoque une erreur si A est vide.
D´efinition de la fonction
Tnoeud * FilsGauche(Tnoeud *bt)
{
if (EstVide(A))
{
printf(”Pas de fils gauche dans un arbre vide ! ! !”) ;
exit(EXIT FAILURE) ;
}
else
{
return (A− >fg) ;
}
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 46/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Adresse du fils droit : Tnoeud * FilsDroit(Tnoeud *A) ;
La fonction FilsDroit renvoie l’adresse du fils droit de A s’il n’est pas vide.
Elle provoque une erreur si A est vide.
D´efinition de la fonction
Tnoeud * FilsGauche(Tnoeud *bt)
{
if (EstVide(A))
{
printf(”Pas de fils droit dans un arbre vide ! ! !”) ;
exit(EXIT FAILURE) ;
}
else
{
return (A− >fd) ;
}
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 47/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Tester si un noeud est une feuille : int EstFeuille(Tnoeud * F)
La fonction EstFeuille() teste si un noeud est une feuille
elle renvoie 1 si elle est une feuille, et 0 sinon.
D´efinition de la fonction
int EstFeuille(Tnoeud * F)
{
if (A==NULL)
return 0 ;
if (A− >fg==NULL && A− >fd==NULL)
return 1 ;
else
return 0 ;
}
Autre solution
int EstFeuille(arbreBin F)
{
return !EstVide(F) && EstVide(FilsGauche(F)) && EstVide(FilsDroit(F)) ;
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 48/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Ins´erer une feuille comme comme fils droit d’un noeud void insertDroit(Tnoeud *n, Element e)
La fonction insertDroit() ins`ere une feuille contenant e comme fils droit de n.
elle provoque une erreur si n est vide ou si son fils droit n’est pas vide.
D´efinition de la fonction
void insertDroit(Tnoeud *n, Element e)
{
if( !EstVide(n) && EstVide(FilsDroit(n)))
n− >fd=CreerFeuille(e) ;
else
{
printf(”Impossible d’ins´erer un noeud comme un fils droit ! !”) ;
exit(EXIT FAILURE) ;
}
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 49/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Ins´erer une feuille comme comme fils gauche d noeud void insertGauche(Tnoeud *n, Element e)
La fonction insertGauche() ins`ere une feuille contenant e comme un fils gauche
de n.
elle provoque une erreur si n est vide ou si son fils gauche n’est pas vide.
D´efinition de la fonction
void insertGauche(Tnoeud *n, Element e)
{
if( !EstVide(n) && EstVide(FilsGauche(n)))
n− >fg=CreerFeuille(e) ;
else
{
printf(”Impossible d’ins´erer un noeud comme un fils gauche ! !”) ;
exit(EXIT FAILURE) ;
}
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 50/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Supprimer un fils droit d’un noeud Element SupprimerDroit(Tnoeud *n)
La fonction SupprimerDroit() supprime et renvoie la racine du fils droit de n si
c’est une feuille.
Provoque une erreur si n est vide ou si son fils droit n’est pas une feuille.
D´efinition de la fonction
Element SupprimerDroit(Tnoeud *n)
{
Element res ;
if(EstVide(n) || !EstFeuille(FilsDroit(n)))
{
printf(”Impossible de supprimer le fils droit ! !”) ;
exit(EXIT FAILURE) ;
}
else
{
res=ValRacine(n− >fd) ;
n− >fd=ArbreBinVide() ;
return res ;
}
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 51/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Supprimer un fils gauche d’un noeud Element SupprimerGauche(Tnoeud *n)
La fonction SupprimerGauche() supprime et renvoie la racine du fils gauche de
n si c’est une feuille.
Provoque une erreur si n est vide ou si son fils gauche n’est pas une feuille.
D´efinition de la fonction
Element SupprimerGauche(Tnoeud *n)
{
Element res ;
if(EstVide(n) || !EstFeuille(FilsGauche(n)))
{
printf(”Impossible de supprimer le fils gauche ! !”) ;
exit(EXIT FAILURE) ;
}
else
{
res=ValRacine(n− >fg) ;
n− >fg=ArbreBinVide() ;
return res ;
}
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 52/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Ins`erer une feuille le plus `a droite possible void insertDroitplusProfond(TNoeud **bt, Element e)
La fonction insertDroitplusProfond() ins`ere une feuille contenant e le plus `a
droite possible dans l’arbre *bt.
Si l’abre est vide, l’insertion se fait `a la racine.
D´efinition de la fonction
void insertDroitplusProfond(TNoeud **bt, Element e)
{
Tnoud * tmp ;
if(EstVide(*bt)
*bt=CreerFeuille(e) ;
else
{
tmp=*bt ;
while( !Estvide(FilsDroit(tmp)))
tmp=FilsDroit(tmp) ;
insertDroit(tmp,e) ;
}
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 53/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Supprimer le noeud le plus `a gauche possible void SupprimerGaucheplusProfond(TNoeud **bt)
La fonction SupprimerGaucheplusProfond() supprime (et renvoie sa racine) le
noeud le plus `a gauche possible dans l’arbre *bt.
Provoque une erreur si *bt est vide. Peut supprimer la racine si elle est le noeud
le plus `a gauche.
D´efinition de la fonction
void SupprimerGaucheplusProfond(TNoeud **bt){
Tnoud * tmp ;
Element res ;
if(EstVide(*bt)
printf(”impossible ! ! !”) ;
if(EstVide(FilsGauche(*bt))){
res=ValRacine(*bt) ;
*bt=FilsDroit(*bt) ; }
else{ tmp=*bt ;
while( !Estvide(FilsGauche(FilsGauche(tmp))))
tmp=FilsGauche(tmp) ;
res=ValRacine(FilsGauche(tmp)) ;
tmp− >fg=(tmp− >fg)− >fd ;}
return res ; }
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 54/ 55
Les arbres
Les arbres binaires
D´efinition des arbres binaires
Arbres binaires particuliers
Implantation d’un arbre binaire
Notion de parcours
Les primitives sur les arbres binaires
Les autres fonctions sur les arbres binaires
Rechercher un ´el´ement : int Rechercher(Tnoeud *a, Element v)
D´efinition de la fonction
int Rechercher(Tnoeud *a, Element v)
{
if (EstVide(a))
return 0 ;
if (a− >etiq==v)
return 1 ;
if (Rechercher(FilsGauche(a),v))
return 1 ;
return Rechercher(FilsDroit(a),v))
}
Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 55/ 55

Contenu connexe

Tendances

Les arbres de décisions
Les arbres de décisionsLes arbres de décisions
Les arbres de décisionsMariem Chaaben
 
Cours : les listes chainées Prof. KHALIFA MANSOURI
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI Mansouri Khalifa
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage CMohamed Lahby
 
Chapitre 5 arbres binaires
Chapitre 5 arbres binairesChapitre 5 arbres binaires
Chapitre 5 arbres binairesSana Aroussi
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesSana Aroussi
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithmebadr zaimi
 
L’algorithme 1.pptx
L’algorithme 1.pptxL’algorithme 1.pptx
L’algorithme 1.pptxOkanimegamers
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI Mansouri Khalifa
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Ontologie concept applications
Ontologie concept applicationsOntologie concept applications
Ontologie concept applicationsbenouini rachid
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheSana Aroussi
 

Tendances (20)

Les arbres de décisions
Les arbres de décisionsLes arbres de décisions
Les arbres de décisions
 
Cours : les listes chainées Prof. KHALIFA MANSOURI
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage C
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Arbre de décision
Arbre de décisionArbre de décision
Arbre de décision
 
Chapitre 5 arbres binaires
Chapitre 5 arbres binairesChapitre 5 arbres binaires
Chapitre 5 arbres binaires
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Asd
AsdAsd
Asd
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentielles
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithme
 
L’algorithme 1.pptx
L’algorithme 1.pptxL’algorithme 1.pptx
L’algorithme 1.pptx
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Ontologie concept applications
Ontologie concept applicationsOntologie concept applications
Ontologie concept applications
 
Cours Génie Logiciel - Introduction
Cours Génie Logiciel - IntroductionCours Génie Logiciel - Introduction
Cours Génie Logiciel - Introduction
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de recherche
 

En vedette

Chapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de trisChapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de trisMohamed Lahby
 
Moyenne coeff-absences-excel
Moyenne coeff-absences-excelMoyenne coeff-absences-excel
Moyenne coeff-absences-exceljurain
 
Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur Mohamed Lahby
 
Atelier EXCEL : Les fonctions financières
Atelier EXCEL :  Les fonctions financièresAtelier EXCEL :  Les fonctions financières
Atelier EXCEL : Les fonctions financièresZakariyaa AIT ELMOUDEN
 
Chap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueChap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueMohamed Lahby
 
Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitresborhen boukthir
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siNarûtö Bàl'Sèm
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)salah fenni
 
Chapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSIChapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSIMohamed Lahby
 
QCM informatique de base
QCM informatique de baseQCM informatique de base
QCM informatique de baseFrust Rados
 
QCM système d'information
QCM système d'informationQCM système d'information
QCM système d'informationFrust Rados
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmationborhen boukthir
 
algorithme tronc commun lycée
algorithme tronc commun lycéealgorithme tronc commun lycée
algorithme tronc commun lycéeKayl Mido
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap IIIInes Ouaz
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)salah fenni
 

En vedette (20)

Langage c partie_2
Langage c partie_2Langage c partie_2
Langage c partie_2
 
Programmation Java
Programmation JavaProgrammation Java
Programmation Java
 
Chapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de trisChapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de tris
 
Moyenne coeff-absences-excel
Moyenne coeff-absences-excelMoyenne coeff-absences-excel
Moyenne coeff-absences-excel
 
Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur
 
Atelier EXCEL : Les fonctions financières
Atelier EXCEL :  Les fonctions financièresAtelier EXCEL :  Les fonctions financières
Atelier EXCEL : Les fonctions financières
 
Chap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueChap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmique
 
Algorithme
AlgorithmeAlgorithme
Algorithme
 
Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitres
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 si
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
Correction
CorrectionCorrection
Correction
 
Chapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSIChapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSI
 
QCM informatique de base
QCM informatique de baseQCM informatique de base
QCM informatique de base
 
QCM système d'information
QCM système d'informationQCM système d'information
QCM système d'information
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Serie2
Serie2Serie2
Serie2
 
algorithme tronc commun lycée
algorithme tronc commun lycéealgorithme tronc commun lycée
algorithme tronc commun lycée
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap III
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)
 

Dernier

Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesMohammedAmineHatoch
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxabdououanighd
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Technologia Formation
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesUnidad de Espiritualidad Eudista
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetJeanYvesMoine
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcourshalima98ahlmohamed
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxhamzagame
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKNassimaMdh
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkRefRama
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...Universidad Complutense de Madrid
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxShinyaHilalYamanaka
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxrajaakiass01
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxikospam0
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfAmgdoulHatim
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
python-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdfpython-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdftrendingv83
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLElebaobabbleu
 

Dernier (19)

Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcours
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
python-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdfpython-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdf
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 

Chapitre 8: Les arbres

  • 1. Les arbres Les arbres binaires Chapitre 8 Les arbres Module 5: Algorithmique et programmation Master Math´ematiques, Cryptologie et S´ecurit´e Informatique (MMCSI) Texte Texte Texte mlahby@gmail.com 28 d´ecembre 2014 Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 1/ 55
  • 2. Les arbres Les arbres binaires Plan 1 Les arbres D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres 2 Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 2/ 55
  • 3. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres D´efinition Un arbre (tree en anglais) est une structure de donn´ees dynamique et non lin´eaire. Un arbre = ensemble de sommets ou noeuds tel que : • ∃ un sommet unique appel´e racine r qui n’a pas de sup´erieur • Tous les autres sommets sont atteints `a partir de r par une branche unique Repr´esentattion graphique d’un arbre : Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 3/ 55
  • 4. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Terminologie et propri`et´es noeud = sommet racine= noeud sans p`ere Une feuille est un sommet qui n’a pas de fils. branche : chemin entre 2 noeuds p`ere d’un sommet : le pr´ed´ecesseur d’un sommet fils d’un sommet : les successeurs d’un sommet fr`eres : des sommets qui ont le mˆeme p`ere Tout sommet x qui n’est pas la racine a : • un unique parent, not´e parent(x) (appel´e p`ere parfois) • 0 ou plusieurs fils. fils(x) d´esigne l’ensemble des fils de x Si x et y sont des sommets tels que x soit sur le chemin de r `a y alors • x est un ancˆetre de y • y est un descendant de x Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 4/ 55
  • 5. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Terminologie et propri`et´es ⇒Exemple : 1 est la racine 4,5,6,9,8 sont les feuilles 9 est un descendant de 3, mais pas de 2 3 est un ancˆetre de 9. Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 5/ 55
  • 6. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Applications Mod`ele pour les structures hi´erachis´ees : • Arbre familial • Arbre g´en´ealogique • Structure de fichiers sous linux ou windows • Organigramme d’une entreprise Les expressions arithm´etiques En linguistique et en compilation (arbres syntaxiques). G´erer des bases de donn´ees Utilisation pour des algorithmes de recherches rapides et efficaces (tri par tas) Algorithmique du texte (Huffamn, prefix-trees) : compression, recherche de motifs, d´etection de r´ep´etitions, ... Intelligence artificielle : arbres de d´ecision Cryptoghraphie : algorithmes de recherche Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 6/ 55
  • 7. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Applications ⇒ Exemple 1 : Arbre g´en´ealogique Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 7/ 55
  • 8. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Applications ⇒ Exemple 2 : Organigramme d’entreprise Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 8/ 55
  • 9. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Applications ⇒ Exemple 3 : Arborescence des fichiers sous linux Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 9/ 55
  • 10. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Applications ⇒ Exemple 4 : Evaluation d’une expression alg´ebrique L’´evaluation de l’expression arithm´etique x + y.(u + x) − u/z est repr´esent´ee par l’arbre ci-dessous : Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 10/ 55
  • 11. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Applications ⇒ Exemple 5 : Arbre syntaxique l’arbre suivant repr´esente la structure de la phrase : for i :=1 to vmax do a :=a+i Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 11/ 55
  • 12. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Applications ⇒ Exemple 6 : Intelligence artificielle : arbres de d´ecision Mod´elisation et Cr´eation d’un Labyrinthe Rectangulaire en Deux Dimensions Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 12/ 55
  • 13. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Mesures sur les arbres Arit´e d’un arbre L’arit´e d’un arbre repr´esente le nombre maximum de fils qu’il poss`ede pour un sommet donn´e. Un arbre dont les noeuds ne comporteront qu’au maximum n fils sera d’arit´e n. On parlera alors d’arbre n-aire. Il existe un cas particuli`erement utilis´e : c’est l’arbre binaire. ⇒ Exemple : Voici un arbre g´en´ealogique dont l’arit´e est 4 Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 13/ 55
  • 14. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Mesures sur les arbres La profondeur d’un sommet La profondeur (niveau) d’un noeud est la longueur de la branche depuis la racine La profondeur d’un sommet est d´efinie r´ecursivement par : • prof(v) = 0 si v est la racine • prof(v) = prof(parent(v)) + 1 La hauteur d’un sommet La hauteur d’un sommet est la plus grande profondeur d’une feuille du sous-arbre dont il est la racine Autres mesures La hauteur d’un arbre est la hauteur de sa racine La taille d’un arbre est le nombre de ses sommets Le degr´e d’un noeud est le nombre de fils que poss`ede ce noeud. Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 14/ 55
  • 15. Les arbres Les arbres binaires D´efinition Terminologie et propri`et´es Applications Mesures sur les arbres Mesures sur les arbres ⇒Exemple : 2,3 sont `a la profondeur 1 4,5,6,7,8 sont `a la profondeur 2 La hauteur de 3 est 2, celle de 6 est 0, celle de 3 est 0, celle de 1 est 4 La hauteur de l’arbre est 5 La taille de l’arbre est 9 Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 15/ 55
  • 16. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires D´efinition des arbres binaires D´efinition informelle Dans un arbre binaire tout noeud a au plus deux fils Un arbre binaire poss`ede exactement deux sous-arbres (´eventuellement vides) D´efinition r´ecursive Soit vide Soit compos´e • d’une racine r • de 2 sous arbres binaires ABG et ABD disjoints * ABG : sous Arbre Binaire Gauche * ABD : sous Arbre Binaire Droit Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 16/ 55
  • 17. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires La notion de noeud D´efinition Le noeud est le composant principal d’un arbre binaire Un noeud est une structure qui comporte trois champs : • Le champ valeur : il contient des informations sur l’´el´ement repr´esent´e par la cellule ; • Le champ ag : il repr´esente un pointeur qui contient l’adresse du sous-arbre gauche • Le champ ad : il repr´esente un pointeur qui contient l’adresse du sous-arbre droit Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 17/ 55
  • 18. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Repr´esentation graphique d’un arbre binaire ⇒D´efinition informelle Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 18/ 55
  • 19. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Repr´esentation graphique d’un arbre binaire ⇒D´efinition r´ecursive Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 19/ 55
  • 20. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbres binaires particuliers Arbre binaire d´eg´en´er´e, filiforme : Chaque noeud poss`ede exactement un fils → `a ´eviter Arbre binaire complet (uniforme) : Chaque niveau est compl`etement rempli Cela signifie, tout sommet est soit une feuille au dernier niveau, soit poss`ede exactement 2 fils → situation id´eale Arbre binaire parfait (presque complet) : Tous les niveaux sont compl`etement remplis sauf ´eventuellement le dernier et dans ce cas les feuilles sont le plus `a gauche possible Arbre binaire ´equilibr´e : La diff´erence de hauteur entre 2 fr`eres ne peut d´epasser 1 Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 20/ 55
  • 21. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbres binaires particuliers Arbre Parfait → situation id´eale Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 21/ 55
  • 22. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbres binaires particuliers Arbre d´eg´en´er´e → Pire des situations Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 22/ 55
  • 23. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbres binaires particuliers Arbre presque parfait Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 23/ 55
  • 24. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbres binaires particuliers Arbre ´equilibr´e Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 24/ 55
  • 25. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbre binaire avec deux pointeurs sur ABG et ABD Un arbre binaire est soit : • un pointeur sur le noeud racine (arbre non vide) • le pointeur NULL (arbre vide) Un noeud est une structure `a trois champs : • Une ´etiquette (valeur) • le sous-arbre gauche (ABG) • le sous-arbre droit (ABD) Avantages : • D´efinition r´ecursive, simple `a programmer, • la plus utilis´ee Inconv´enients : • consomme de la m´emoire dynamique • Temps d’ex´ecution lent. Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 25/ 55
  • 26. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbre binaire avec deux pointeurs sur ABG et ABD D´efinition d’un arbre binaire typedef int Element ; /* D´efinition du type noeud d’un arbre binaire */ typedef struct noeud{ Element etiq ; /*le champ etiq peut avoir n’importe quel type*/ struct noeud *ag ; /*pointeur contenant l’adresse du ABG*/ struct noeud *ad ; /*pointeur contenant l’adresse du ABD*/ }Tnoeud ; D´eclaration d’un arbre binaire Pour d´eclarer une variable de type arbre, il suffit de d´eclarer un pointeur sur son noeud racine Exemple : Tnoeud ∗ Arb Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 26/ 55
  • 27. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbre binaire avec deux pointeurs sur ABG et ABD ⇒ Exemple : Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 27/ 55
  • 28. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbre binaire avec un tableau Un arbre binaire est une structure `a deux champs : • Un tableau o`u sont m´emoris´es les noeuds • Un entier qui donne l’indice de la racine dans le tableau Un noeud est une structure `a trois champs : • L’´etiquette du noeud • L’indice de son fils gauche (ou 0 si pas de fils gauche) • L’indice de son fils droit (ou 0 si pas de fils droit) Inconv´enients : • D´efinition non r´ecursive (arbre = sous-arbre) • Utilis´ee uniquement si on traite un arbre unique Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 28/ 55
  • 29. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbre binaire avec un tableau D´efinition d’un arbre binaire typedef int Element ; /* D´efinition du type noeud d’un arbre binaire */ typedef struct noeud{ Element etiq ; /*le champ etiq peut avoir n’importe quel type*/ int fg ; /*indice du ABG*/ int fd ; /*indice du ABD*/ }NOEUD ; /* D´efinition d’un arbre binaire */ typedef struct { NOEUD tab[TAILLE MAX] ; /*Tableau contenant les noeuds de l’arbre*/ int racine ; /*indice de la racine*/ }Tnoeud ; D´eclaration d’un arbre binaire Pour d´eclarer un arbre, on utilise la syntaxe suivante : Tnoeud ∗ arb; Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 29/ 55
  • 30. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Arbre binaire avec un tableau ⇒ Exemple : Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 30/ 55
  • 31. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Notion de parcours D´efintion Un parcours est un algorithme qui appelle une fonction, sur tous les noeuds (ou les sous arbres) d’un arbre. L’ordre sur les nœuds dans lequel la proc´edure est appel´ee doit ˆetre fix´e. Il y a de nombreux choix possibles qui sont class´es en deux familles : 1 Les algroithmes de parcours en largeur. 2 Les algroithmes de parcours en profondeur. Quelques exemples de fonctions affichage, liste des valeurs, modification etc. Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 31/ 55
  • 32. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Parcours en profondeur D´efintion Un parcours est dit en profondeur lorsque, syst´ematiquement, si l’arbre n’est pas vide, le parcours de l’un des deux sous-arbres est termin´e avant que ne commence celui de l’autre. Les diff´erents types On distingue trois types : 1 Parcours pr´efixe (Racine Gauche Droit) → le noeud racine est trait´e au premier passage avant le parcours des sous-arbres 2 Parcours infixe ou sym´etrique (Gauche Racine Droit) → le noeud racine est trait´e au second passage apr`es le parcours du sous-arbre gauche et avant le parcours du sous-arbre droit 3 Parcours postfixe (Gauche Droit Racine ) → le noeud racine est trait´e au dernier passage apr`es le parcours des sous-arbres Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 32/ 55
  • 33. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Parcours pr´efixe RGD ⇒Exemple : Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 33/ 55
  • 34. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Algorithme de parcours pr´efixe RGD Principe du parcours pr´efixe : 1 application de F `a la racine, 2 parcours pr´efixe du sous-arbre gauche, 3 parcours pr´efixe du sous-arbre droit Algorithme : Parcours(Tnoeud *A) D´ebut SI A est vide ALORS terminaison(A) SINON traitement (A) Parcours (ABG de A) Parcours (ABD de A) FSI Fin Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 34/ 55
  • 35. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Parcours infixe GRD ⇒Exemple : Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 35/ 55
  • 36. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Algorithme de parcours infixe GRD Principe du parcours infixe : 1 parcours infixe du sous-arbre gauche, 2 application de F `a la racine, 3 parcours infixe du sous-arbre droit Algorithme : Parcours(Tnoeud *A) D´ebut SI A est vide ALORS terminaison(A) SINON Parcours (ABG de A) traitement (A) Parcours (ABD de A) FSI Fin Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 36/ 55
  • 37. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Parcours postfixe GDR ⇒Exemple : Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 37/ 55
  • 38. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Algorithme de parcours postfixe GDR Principe du parcours postfixe : 1 parcours postfixe du sous-arbre gauche, 2 parcours postfixe du sous-arbre droit 3 application de F `a la racine, Algorithme : Parcours(Tnoeud *A) D´ebut SI A est vide ALORS terminaison(A) SINON Parcours (ABG de A) Parcours (ABD de A) traitement (A) FSI Fin Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 38/ 55
  • 39. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Parcours en largeur D´efinition Un parcours est dit en largeur lorsqu’il proc`ede en croissant selon les niveaux. Voici un parcours en largeur de gauche `a droite Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 39/ 55
  • 40. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Algorithme de parcours en largeur Id´ee : on remplace la pile d’appels par une file d’attente dans l’algorithme de parcours pr´efixe ParcoursEnLargeur (Tnoeud *A) D´ebut cr´eer une file vide F SI A est non vide ALORS Enfiler A dans F Tant que (F non vide) faire A < −− D´efiler(F) traitement(A) SI ABG de A non vide ALORS Enfiler ABG de A dans F FSI SI ABD de A non vide ALORS Enfiler ABD de A dans F FSI FinTQ FSI d´etruire F Fin Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 40/ 55
  • 41. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Cr´eer un arbre vide :Tnoeud *ArbreBinVide(void) D´efinition de la fonction Tnoeud *ArbreBinVide(void) { Tnoeud * A ; A=NULL ; return(A) ; } Remarque ⇒ On peut faire typedef Tnoeud * arbreBin, dans ce l’entˆete devient : arbreBin ArbreBinVide(void) { arbreBin A ; A=NULL ; return(A) ; } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 41/ 55
  • 42. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Tester si l’arbre binaire est vide : int EstVide(Tnoeud * A) La fonction EstVide() teste si l’arbre est vide ou non, elle renvoie 1 si elle est vide, et 0 sinon. D´efinition de la fonction int EstVide(Tnoeud * A) { if (A==NULL) return 1 ; else return 0 ; } Autre m´ethode arbreBin EstVide(arbreBin A) { if (A==NULL) return 1 ; else return 0 ; } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 42/ 55
  • 43. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Cr´eer un noeud : Tnoeud * CreerNoeud(Element e, Tnoeud *l, Tnoeud *r) ; La fonction CreerNoeud renvoie un arbre binaire dont la racine est e, le fils gauche est l et le fils droit r. elle renvoie un message d’erreur s’il n’ y a pas assez d’espace. D´efinition de la fonction Tnoeud * CreerNoeud(Element e, Tnoeud *l, Tnoeud *r) {Tnoeud *new ; new=(Tnoeud*)malloc(sizof(Tnoeud)) ; if (new==NULL) {printf(”Allocation rat´ee !”) ; exit(EXIT FAILURE) ; } else { new− >etiq=e ; new− >fg=l ; new− >fd=r ; return new ; } } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 43/ 55
  • 44. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Cr´eer une feuille : Tnoeud * CreerFeuille(Element e) ; La fonction CreerFeuille renvoie un arbre binaire dont la racine est e et les fils gauche et droit sont vides. D´efinition de la fonction Tnoeud * CreerFeuille(Element e) { return CreerNoeud(e,ArbreBinVide(),ArbreBinVide()) ; } Une autre solution arbreBin CreerFeuille(Element e) {arbreBin new ; new=(arbreBin)malloc(sizof(Tnoeud)) ; new− >etiq=e ; new− >fg=NULL ; new− >fd=NULL ; return new ; } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 44/ 55
  • 45. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Valeur de la racine : Element ValRacine(Tnoeud * A) ; La fonction ValRacine renvoie l’´el´ement `a la racine de l’arbre A s’il n’est pas vide. Elle provoque une erreur si bt est vide. D´efinition de la fonction Element ValRacine(Tnoeud * A) { if (EstVide(A)) { printf(”Pas de noeud `a la racine d’un arbre vide ! ! !”) ; exit(EXIT FAILURE) ; } else { return (A− >etiq) ; } } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 45/ 55
  • 46. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Adresse du fils gauche :Tnoeud * FilsGauche(Tnoeud *A) ; La fonction FilsGauche renvoie l’adresse du fils gauche de A s’il n’est pas vide. Elle provoque une erreur si A est vide. D´efinition de la fonction Tnoeud * FilsGauche(Tnoeud *bt) { if (EstVide(A)) { printf(”Pas de fils gauche dans un arbre vide ! ! !”) ; exit(EXIT FAILURE) ; } else { return (A− >fg) ; } } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 46/ 55
  • 47. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Adresse du fils droit : Tnoeud * FilsDroit(Tnoeud *A) ; La fonction FilsDroit renvoie l’adresse du fils droit de A s’il n’est pas vide. Elle provoque une erreur si A est vide. D´efinition de la fonction Tnoeud * FilsGauche(Tnoeud *bt) { if (EstVide(A)) { printf(”Pas de fils droit dans un arbre vide ! ! !”) ; exit(EXIT FAILURE) ; } else { return (A− >fd) ; } } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 47/ 55
  • 48. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Tester si un noeud est une feuille : int EstFeuille(Tnoeud * F) La fonction EstFeuille() teste si un noeud est une feuille elle renvoie 1 si elle est une feuille, et 0 sinon. D´efinition de la fonction int EstFeuille(Tnoeud * F) { if (A==NULL) return 0 ; if (A− >fg==NULL && A− >fd==NULL) return 1 ; else return 0 ; } Autre solution int EstFeuille(arbreBin F) { return !EstVide(F) && EstVide(FilsGauche(F)) && EstVide(FilsDroit(F)) ; } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 48/ 55
  • 49. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Ins´erer une feuille comme comme fils droit d’un noeud void insertDroit(Tnoeud *n, Element e) La fonction insertDroit() ins`ere une feuille contenant e comme fils droit de n. elle provoque une erreur si n est vide ou si son fils droit n’est pas vide. D´efinition de la fonction void insertDroit(Tnoeud *n, Element e) { if( !EstVide(n) && EstVide(FilsDroit(n))) n− >fd=CreerFeuille(e) ; else { printf(”Impossible d’ins´erer un noeud comme un fils droit ! !”) ; exit(EXIT FAILURE) ; } } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 49/ 55
  • 50. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Ins´erer une feuille comme comme fils gauche d noeud void insertGauche(Tnoeud *n, Element e) La fonction insertGauche() ins`ere une feuille contenant e comme un fils gauche de n. elle provoque une erreur si n est vide ou si son fils gauche n’est pas vide. D´efinition de la fonction void insertGauche(Tnoeud *n, Element e) { if( !EstVide(n) && EstVide(FilsGauche(n))) n− >fg=CreerFeuille(e) ; else { printf(”Impossible d’ins´erer un noeud comme un fils gauche ! !”) ; exit(EXIT FAILURE) ; } } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 50/ 55
  • 51. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Supprimer un fils droit d’un noeud Element SupprimerDroit(Tnoeud *n) La fonction SupprimerDroit() supprime et renvoie la racine du fils droit de n si c’est une feuille. Provoque une erreur si n est vide ou si son fils droit n’est pas une feuille. D´efinition de la fonction Element SupprimerDroit(Tnoeud *n) { Element res ; if(EstVide(n) || !EstFeuille(FilsDroit(n))) { printf(”Impossible de supprimer le fils droit ! !”) ; exit(EXIT FAILURE) ; } else { res=ValRacine(n− >fd) ; n− >fd=ArbreBinVide() ; return res ; } } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 51/ 55
  • 52. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Supprimer un fils gauche d’un noeud Element SupprimerGauche(Tnoeud *n) La fonction SupprimerGauche() supprime et renvoie la racine du fils gauche de n si c’est une feuille. Provoque une erreur si n est vide ou si son fils gauche n’est pas une feuille. D´efinition de la fonction Element SupprimerGauche(Tnoeud *n) { Element res ; if(EstVide(n) || !EstFeuille(FilsGauche(n))) { printf(”Impossible de supprimer le fils gauche ! !”) ; exit(EXIT FAILURE) ; } else { res=ValRacine(n− >fg) ; n− >fg=ArbreBinVide() ; return res ; } } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 52/ 55
  • 53. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Ins`erer une feuille le plus `a droite possible void insertDroitplusProfond(TNoeud **bt, Element e) La fonction insertDroitplusProfond() ins`ere une feuille contenant e le plus `a droite possible dans l’arbre *bt. Si l’abre est vide, l’insertion se fait `a la racine. D´efinition de la fonction void insertDroitplusProfond(TNoeud **bt, Element e) { Tnoud * tmp ; if(EstVide(*bt) *bt=CreerFeuille(e) ; else { tmp=*bt ; while( !Estvide(FilsDroit(tmp))) tmp=FilsDroit(tmp) ; insertDroit(tmp,e) ; } } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 53/ 55
  • 54. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Supprimer le noeud le plus `a gauche possible void SupprimerGaucheplusProfond(TNoeud **bt) La fonction SupprimerGaucheplusProfond() supprime (et renvoie sa racine) le noeud le plus `a gauche possible dans l’arbre *bt. Provoque une erreur si *bt est vide. Peut supprimer la racine si elle est le noeud le plus `a gauche. D´efinition de la fonction void SupprimerGaucheplusProfond(TNoeud **bt){ Tnoud * tmp ; Element res ; if(EstVide(*bt) printf(”impossible ! ! !”) ; if(EstVide(FilsGauche(*bt))){ res=ValRacine(*bt) ; *bt=FilsDroit(*bt) ; } else{ tmp=*bt ; while( !Estvide(FilsGauche(FilsGauche(tmp)))) tmp=FilsGauche(tmp) ; res=ValRacine(FilsGauche(tmp)) ; tmp− >fg=(tmp− >fg)− >fd ;} return res ; } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 54/ 55
  • 55. Les arbres Les arbres binaires D´efinition des arbres binaires Arbres binaires particuliers Implantation d’un arbre binaire Notion de parcours Les primitives sur les arbres binaires Les autres fonctions sur les arbres binaires Rechercher un ´el´ement : int Rechercher(Tnoeud *a, Element v) D´efinition de la fonction int Rechercher(Tnoeud *a, Element v) { if (EstVide(a)) return 0 ; if (a− >etiq==v) return 1 ; if (Rechercher(FilsGauche(a),v)) return 1 ; return Rechercher(FilsDroit(a),v)) } Module 5: Algorithmique et programmation ENS Casablanca 2014-2015 55/ 55