Vous êtes sur la page 1sur 6

Chapitre III.

Structures arborescentes
- Arbres binaires
- Arbres binaires de recherche

Sources:
1- Cours les arbres binaires, Larbi. https://www.lri.fr/~fiorenzi/Teaching/AL/C4.pdf
2- Cours algoritmique, Anne Vilnat. http://www.limsi.fr/Individu/anne/coursAlgo
3- Arbres binaires de recherche, François Denis. http://pageperso.lif.univ-mrs.fr/~francois.denis/algoMPCI/chap1.pdf
4- https://developpement-informatique.com/article/177/supprimer-un-noeud-de-larbre-binaire-de-recherche

1. Arbres binaires

2
Chap III: Structures arborescentes

Arbres binaires
Une arborescence est utilisée :
§ Dans la vie de tous les jours : pour représenter des hiérarchies, des classifications,
des partitions,...
§ En informatique pour représenter des informations de ce type et aussi pour :
• l’organisation interne des fichiers en mémoire
• les modes de calcul d’une expression
• l’organisation des données triées

§ Exemple de classification
Quelle logique?
• du plus générique au plus spécifique
• du plus ancien au plus récent
• de la plus haute autorité à la moindre
• du plus complexe au plus simple

© O.Lamouchi
3

Chap III: Structures arborescentes

Arbres binaires
§ Exemple d’expressions arithmétiques § Terminologie

(x-(2*y))+((x+(y/z))*3)

© O.Lamouchi
4
Chap III: Structures arborescentes

Arbres binaires

§ Définition
• Un arbre binaire c’est:
- soit un arbre vide
- soit une racine avec deux sous-arbres binaires : fils gauche et fils droit

§ La hauteur
• La hauteur d’un nœud est la longueur du plus long chemin de ce nœud aux
feuilles qui en dépendent plus 1.
• La hauteur d’un arbre est la hauteur de sa Racine (L’arbre vide a une hauteur 0)

§ La profondeur (niveau)
• La profondeur d’un nœud est le nombre de nœuds du chemin qui va de la racine
à ce nœud (La racine d’un arbre est à une profondeur 0).
• La profondeur d’un nœud est égale à la profondeur de son père plus 1. (Si un
nœud est à une profondeur p, tous ses fils sont à une profondeur p+1).
© O.Lamouchi
5

Arbres binaires
Chap III: Structures arborescentes

Opérations sur les Arbres binaires


• Les arbres binaires (AB) forment une structure de données qui peut être définie récursivement
de la manière suivante : un arbre binaire est:
- Soit vide,
- Soit composé d’une racine portant une étiquette (clé) et d’une paire d’arbres binaires,
appelés fils gauche et droit.
@racine

TYPE NOEUD = STRUCTURE @fg


Info
@fd

Info : TYPE_INFO
Info Info
FG : *NŒUD @fg @fd @fg @fd

FD : *NŒUD
Info Info Info Info
@fg @fd @fg @fd @fg @fd @fg @fd
FIN STRUCTURE

TYPE ArbreBinaire = *NŒUD : : : :

© O.Lamouchi
6
Arbres binaires
Chap III: Structures arborescentes

Opérations sur les Arbres binaires (suite)


• Pour pouvoir manipuler des arbres de recherche, on doit donc disposer des fonctionnalités
suivantes :

• Fonction vide(Arb:ArbreBinaire) retourne Booléen: Vrai si l’arbre binaire est vide, faux
sinon.

• Fonction Info(Arb:ArbreBinaire) retourne Type_Info: Valeur enregistrée à la racine.


• Fonction FilsGauche(Arb:ArbreBinaire) Retourne ArbreBinaire: Retourne l’arbre
binaire formé par le sous-arbre gauche. Erreur si l’arbre binaire est vide.

• Fonction FilsDroit(Arb:ArbreBinaire) Retourne ArbreBinaire: Retourne l’arbre binaire


formé par le sous-arbre droit. Erreur si l’arbre binaire est vide.

• Procedure AjoutGauche(Arb:ArbreBinaire,val:Type_Info): Ajout au premier fils gauche


vide.

• Procedure AjoutDroit(Arb:ArbreBinaire,val:Type_Info) : Ajout de val au premier fils droit


vide.

• Fonction CreerArbre(val:TypeInfo, fg:ArbreBinaire, fd:ArbreBinaire): Retourne la


racine de l’arbre binaire et l’ajout du sous-arbre gauche et le sous-arbre droite, s’ils existent.
© O.Lamouchi
7

Arbres binaires
Chap III: Structures arborescentes

Parcours d’un arbre binaire

• Le parcours le plus simple à programmer est le parcours dit en profondeur d’abord.

• Pour parcourir un arbre non vide a:

- On parcourt récursivement son sous-arbre gauche,


- puis son sous-arbre droit,
- la racine de l’arbre pouvant être traitée au début, entre les deux parcours ou à la
fin. => Dans le premier cas, on dit que les nœuds sont traités dans un ordre
préfixe, dans le second cas, dans un ordre infixe et dans le troisième cas, selon
un ordre postfixe.

© O.Lamouchi
8
Arbres binaires
Chap III: Structures arborescentes

Affichages: Ordre préfixe


Ordre préfixe (la racine d’abord): On affiche la racine, puis le
sous-arbre gauche, puis le sous-arbre droit.

=> Ce qui donne ici: 12, 1, 91, 67, 7, 82, 61

Source: 3

Procedure PaffichePrefixe(a:ArbreBinaire)
DEBUT
SI Vide(a)=FAUX Alors

ECRIRE (Info(a)) //Traitement

PaffichePrefixe(FilsGauche(a)) //Appel récursif

PaffichePrefixe(FilsDroite(a)) //Appel récursif

FINSI
FIN
© O.Lamouchi
9

Arbres binaires
Chap III: Structures arborescentes

Affichages: Ordre postfixe


Ordre postfixe (la racine à la fin): On affiche le sous-arbre
gauche, puis le sous-arbre droit, puis la racine.

⇒ Ce qui donne ici: 91, 67, 1, 61, 82, 7, 12

Source: 3

Procedure PaffichePostfixe(a:ArbreBinaire)
DEBUT
SI Vide(a)=FAUX Alors
PaffichePostfixe(FilsGauche(a)) //Appel récursif

PaffichePostfixe(FilsDroite(a)) //Appel récursif

ECRIRE (Info(a)) //Traitement

FINSI
FIN

© O.Lamouchi
10
Arbres binaires
Chap III: Structures arborescentes

Affichages: Ordre infixe


Ordre infixe (la racine au milieu): On affiche le sous-arbre
gauche, puis la racine, puis le sous-arbre droit.

=> Ce qui donne ici: 91, 1, 67, 12, 7, 61, 82

Source: 3

Procedure PafficheInfixe(a:ArbreBinaire)
DEBUT
SI Vide(a)=FAUX Alors

PafficheInfixe(FilsGauche(a)) //Appel récursif

ECRIRE (Info(a)) //Traitement

PafficheInfixe(FilsDroite(a)) //Appel récursif

FINSI
FIN
© O.Lamouchi
11

Vous aimerez peut-être aussi