Vous êtes sur la page 1sur 7

Université Badji Mokhtar , Annaba, Département d’Informatique, L2, ALGO-STD-2, sabri.ghazi@univ-annaba.

dz

Chapitre les structures de données hiérarchiques : Les


arbres
Introduction :
Les arbres sont une structure de données très répandues en informatique. Elle permet de
représenter plusieurs types de problèmes. L’exemple le plus simple est l’organisation du système de
fichier. Comme vous pouvez remarquer, votre disque dur est organisé en partition, chacune contient
des fichiers et des répertoires. Il suffit d’ouvrir la ligne de commande sous Windows et lancer la
commande « tree » (comme illustré dans la figure). On peut voir comment est organisé le système
de fichier.

Figure : La structure arborescente du système de fichier.


Il est clair que la structure arborescente permet de mieux gérer d’une façon optimisée et intuitive
le disque dure. Comme illustré dans la figure, le disque dure contient une partition C, qui peut être
considérée comme la racine d’un arbre, les répertoires contiennent des sous-répertoires et ainsi de
suite.
Un autre exemple qu’on peut représenter en utilisant une structure arborescente est l’organisation
hiérarchique, par exemple l’organisation au sein d’une entreprise : Directeur général, les adjoints,
les chefs services, et à la fin les collaborateurs. Cette structure peut être représenté par un arbre,
chaque niveau représente un niveau de hiérarchie dans l’organisation de l’entreprise.
Découpage géographique, on peut aussi prendre comme exemple, le découpage administratif de
45

l’Algérie. Le pays et découpé en Wilaya, et chacune est découpé en daïra. Les daïras sont eux
Page

découpées en commune.
Université Badji Mokhtar , Annaba, Département d’Informatique, L2, ALGO-STD-2, sabri.ghazi@univ-annaba.dz

Définition :
En algorithmique, un arbre est un ensemble d’éléments (appelés nœud) qui sont liés par des
liaisons qui exprime une hiérarchie. On représente un arbre par des enregistrements qui regroupent :
une information, et des pointeurs vers des autres nœuds qu’on nomme fils. Comme schématisé dans
la figure suivante :

B C

D E F G

Figure : exemple d’un arbre

Terminologie :
Dans ce qui suit, on décrit les termes qui seront utilisé dans le cours :
 Racine : c’est le nœud qui donne accès au reste de l’arbre, il ne possède pas de père.
 Feuille : un nœud qui ne possède aucun fils.
 Taille d’un arbre : c’est le nombre de nœuds qui le forme.
 Sous-arbre : c’est une partie de l’arbre.
 Hauteur : La hauteur d’un nœud X, c’est le nombre de nœud qu’on visite à partir de la
racine, pour arrive au nœud x . Il est à noter, que par convention la hauteur de la racine est
égale à 0 (certains auteurs adoptent une autre convention, dont laquelle la hauteur de la
racine est 1)
 La hauteur d’un arbre est le maximum des hauteurs de ses nœuds plus 1.

Figure : hauteur d’un arbre.


 Descendants: les descendants d’un nœud X, c’est l’ensemble des nœuds qui forme
l’arbre dont sa racine est X.
 Les ascendants : c’est l’ensemble des nœuds qu’on passe pour arriver au nœud X. La
racine est un ascendant de tous les nœuds qui forme l’arbre.
46 Page
Université Badji Mokhtar , Annaba, Département d’Informatique, L2, ALGO-STD-2, sabri.ghazi@univ-annaba.dz

 Fils, parent et frère : comme illustré dans la figure ci-dessous, le nœud 8 est le père des
nœud 9 et 10. Le nœud 9 est le fils droit, le nœud 10 c’est le fils gauche. Les nœud 9 et
10 sont frères.

Figure : La notions de fils père, frère dans un arbre

Les Arbres binaires


Définitions
 Un arbre binaire est un arbre, dans lequel chaque élément ne peut avoir au maximum que
deux fils.
Déclaration d’un arbre binaires : un arbre binaire peut être représenté par un enregistrement qui
possède une information et aussi deux champs de type pointeurs qui contiennent les adresses de ses
fils. Comme décrit dans le listing qui suit :

Listing : Déclaration d’un arbre binaire


 Un arbre binaire de rechercher est un arbre binaire qui satisfait :
o Chaque nœud possède une valeur plus grande que tous les nœuds qui forment son
sous-arbre gauche ; et plus petite que tous les nœuds qui forment son sous-arbre
droite.
47 Page

Figure : exemple d’un arbre binaire de recherche.


Université Badji Mokhtar , Annaba, Département d’Informatique, L2, ALGO-STD-2, sabri.ghazi@univ-annaba.dz

Parcours d’un arbre binaire :


Le parcours d’un arbre peut se faire selon deux stratégies : en profondeur, ou bien en largeur.

Parcours en largeur ou hiérarchique


Comme illustré dans la figure suivante, Un algorithme classique consiste à explorer chaque
nœud d'un niveau donné de gauche à droite, puis de passer au niveau suivant. On dénomme cette
stratégie le parcours en largeur de l'arbre.

Figure : parcours d’un arbre en largeur

Listing : Parcours en largeur d’un arbre binaire.

Parcours en profondeur:
La stratégie consiste à aller en profondeur en visitant les feuilles d'un nœud de l'arbre, puis
lorsque toutes les feuilles du nœud ont été visitées, l'algorithme "remonte" au nœud plus haut dont
les feuilles n'ont pas encore été visitées.
On peut parcourir un arbre selon trois façons :
 RGD (RACINE-GAUCHE-DROITE):On visite le nœud racine, puis on visite tout le
sous-arbre gauche, et à la fin on visite le sous-arbre droite.
 GRD (GAUCHE-RACINE-DROITE) : On visite tout le sous-arbre gauche après on
visite la racine, et à la fin on visite le sous-arbre droite.
 GDR(GAUCHE-DROITE-RACINE): On visite le sous-arbre gauche, après le sous-
arbre droite, et à la fin on visite la racine.
48 Page
Université Badji Mokhtar , Annaba, Département d’Informatique, L2, ALGO-STD-2, sabri.ghazi@univ-annaba.dz

2 5

NULL
NULL
1 3

NULL
NULL NULL
NULL

Figure :exemple d’un arbre binaire

Algorithme de parcours en pré-ordre : (ordre préfixé)

Résultat :

4 – 2- 1- 3 -5

Listing parcours en ordre préfixé

Algorithme de parcours en post-ordre : (ordre postfixé)

Résultat :

1 – 3- 2- 5 -4

Listing parcours en ordre postfixé


49 Page
Université Badji Mokhtar , Annaba, Département d’Informatique, L2, ALGO-STD-2, sabri.ghazi@univ-annaba.dz

Algorithme de parcours en ordre symétrique : (ordre infixé)


Résultat :

1–2–3–4-5

Listing parcours en ordre infixé

Les opérations de base sur un arbre binaire :


Calculer la hauteur d’un arbre binaire
Comme décrit dans la définition, pour calculer la hauteur d’un arbre , on doit calculer la hauteur des
deux sous-arbres gauche et droite, après on prend le maximum on lui rajoute 1 ( pour arriver a la
hauteur de tout l’arbre). Voir le listing suivant :

Listing : Fonction qui calcule la hauteur d’un arbre.


Chercher si un élément existe dans l’arbre ou non
Pour vérifier si un élément d’une valeur donnée existe dans un arbre, on doit procéder comme suit :
1. Si l’arbre est vide, donc la fonction renvoi False, car il ne peut exister dans un arbre vide.
2. Si le nœud de la racine sa valeur est égale à la valeur cherchée, donc la fonction renvoi
True.
3. On cherche l’élément dans le sous-arbre gauche, s’il n’existe pas on le cherche dans le sous-
arbre droite, si in ne figure dans aucun des deux la renvoi False.

Listing : Chercher un élément dans un arbre binaire.


50

Pour bien comprendre l’algorithme de la fonction exist, on essaye de le dérouler en utilisant l’arbre
de la figure précédente, on cherche si un élément de valeur X=5..
Page
Université Badji Mokhtar , Annaba, Département d’Informatique, L2, ALGO-STD-2, sabri.ghazi@univ-annaba.dz

Exist( A qui pointe sur le nœud de valeur 4, X =5) Résultat == True


La racine n’est pas NULL
La racine sa valeur n’est pas égale à 5 donc Résultat de l’appel :
Appel Exist( A’ pointe 2, X =5) || Exist( A ‘’ pointe sur 5, X =5) False ou True donc résultat final
True
Exist(A’’’ pointe sur 2,x=5) Résultat de l’appel False
La racine n’est pas NULL
La racine sa valeur n’est pas égal a 5.
Appel Exist(A point sur 1)||Exist(Apoint sur 3)
La racine n’est pas NULL Résultat de l’appel False
La racine n’est pas egal a 5
Appel
Exist(NULL,X=5)||Exist(NULL,X=5)
Résultat de l’appel False
False || False
Exist( A ‘’ pointe sur 5, X =5) Résultat de l’appel True
La racine n’est pas NULL
La racine est égalea 5 -- True
Tableau : déroulement de la fonction Exist
Comme on peut remarquer, la recherche doit être faite en vérifiant tous les nœuds, car on doit
comparer les éléments.
Si notre arbre est structuré selon la propriété d’un arbre binaire de recherche, la fonction Exist, peut
être améliorée, selon la valeur cherchée, on peut comparer avec la racine et après décider ou est ce
qu’on doit se diriger, si la valeur est inférieure a la racine donc on doit aller comparer avec le sous-
arbre gauche, sinon on va comparer avec les nœuds qui forment le sous-arbre droite.
51 Page

Vous aimerez peut-être aussi