Vous êtes sur la page 1sur 30

© L. B. Romdhane, Ph.D.

ISITCom / US / Tunisie
2ème année DNI
Sommaire
 Introduction
 TAD ARBRE
 Niveau & Hauteur
 Traversée
 Implémentation

ALG. AVANCEE © L. B. Romdhane; ISITCom L2


INTRODUCTION (1)
 Vecteur, Liste, Pile, File sont des TADs linéaires
 les éléments se trouvent dans des positions qui sont
consécutives !
 Un arbre est un ensemble de nœuds avec une
relation de hiérarchie
 père A père
 fils
père
& B C D F
fils

fils E G H

ALG. AVANCEE © L. B. Romdhane; ISITCom L3


INTRODUCTION (2)
 Définition récursive
 un arbre est soit l’arbre vide
 soit un nœud racine appélé root et un ensemble de (sous)-
arbres T1, ..., Tn de sorte à ce que la racine de Ti(i=1..n) est
connecté par un lien direct à root
 Terminologie
 racine : un nœud sans père
 nœud externe ou feuille : un nœud sans fils
 nœud interne : un nœud admettant au moins un fils
 frère : deux nœuds sont frères s’ils ont le même père

ALG. AVANCEE © L. B. Romdhane; ISITCom L4


INTRODUCTION (3)
 ascendant d’un nœud v est
 soit le père de v
 soit le père d’un ascendant de v
 descendant d’un nœud v est
 soit le fils de v
 soit le fils d’un descendant de v
 la racine n’a pas d’ascendants, une feuille n’a pas de
descendants
 un sous arbre enraciné en un nœud v est constitué de
v (racine) et des descendants de v
 un arbre est ordonné s’il existe un ordre prédéfini
pour le parcours des fils d’un noeud
ALG. AVANCEE © L. B. Romdhane; ISITCom L5
INTRODUCTION (4)
 Système de fichiers d’un OS

/usr/lbr/courses

ASD016 NT04

Contents Projects
Grades Slides Homeworks

PVM MPI
hw1 hw2 hw3
chap01 chap02

ALG. AVANCEE © L. B. Romdhane; ISITCom L6


INTRODUCTION (5)
 Un document texte
Livre

Préface Ch 1 Ch 2 ••• Ch 9 Biblio

¶ ¶
§1.1 §1.2 §9.1 ... §9.10 ¶ ... ¶


¶ ¶ ¶
ALG. AVANCEE © L. B. Romdhane; ISITCom L7
INTRODUCTION (6)
 Expression arithmétique
 un arbre dont les feuilles sont les variables ou les constantes et
les nœuds internes sont les opérateurs (+,-,/, *)
 ((((3 + 1) * 3) / ((9-5) + 2)) - ((3 * (a – 4)) + b))
-
/ +
* + * b

+ 3 - 2 3 -

3 1 9 5 a 4

ALG. AVANCEE © L. B. Romdhane; ISITCom L8


TAD ARBRE (1)
 Type ARBRE
 Paramètre noeud
 Utilise booléen, Liste
 Opérations
 Constructeurs
 créer_arbre : → Arbre
 permet de créer un arbre initialement vide (aucun nœud)
 insérer_noeud : nœud x Arbre → Arbre
 permet d’insérer un nouveau nœud dans un arbre. La position
d’insertion dépend de la stratégie d’insertion

ALG. AVANCEE © L. B. Romdhane; ISITCom L9


TAD ARBRE (2)
 enraciner : nœud x Liste (Arbres) → Arbre
 permet de « rattacher ensemble » une liste d’arbre dans un
noeud

noeud nouvelle racine de l’arbre

...
T1 TN

ALG. AVANCEE © L. B. Romdhane; ISITCom L 10


TAD ARBRE (3)
 Observateurs
 arbre_vide : Arbre → booléen
 permet de dire si un arbre est vide ou non
 racine : Arbre → nœud
 renvoie le nœud racine d’un arbre non vide
 estRacine : nœud x Arbre → booléen
 indique si un nœud est racine de l’arbre ou non
 estFeuille : nœud x Arbre → booléen
 indique si un nœud est feuille ou non

ALG. AVANCEE © L. B. Romdhane; ISITCom L 11


TAD ARBRE (4)
 père : nœud x Arbre → noeud
 donne le père d’un nœud non racine
 estPère : nœud x nœud x Arbre → booléen
 indique si un nœud est père ou non d’un autre
 estFils : nœud x nœud x Arbre → booléen
 indique si un nœud est fils ou non d’un autre
 fils : nœud x Arbre → Liste(nœuds)
 donne la liste des fils d’un nœud non feuille
 la manière de parcourir la liste (ordonné ou non) permet de
déterminer si un arbre est ordonné ou non

ALG. AVANCEE © L. B. Romdhane; ISITCom L 12


TAD ARBRE (5)
 On peut définir d’autres méthodes spécifiques selon le
domaine d’application
 associer aux nœuds des étiquettes (un type abstrait qui peut-
être un entier, réel, structure, etc.) - CIN d’une petrsonne
 valEtiq : nœud x Arbre → Etiquette
 donne la valeur de l’étiquette d’un nœud
 modifEtiq : étiquette x nœud x Arbre → Arbre
 modifie l’étiquette d’un nœud
 maxEtiq, minEtiq : Arbre → noeud
 donnent le nœud ayant l’étiquette maximale (resp. minimale)

ALG. AVANCEE © L. B. Romdhane; ISITCom L 13


TAD ARBRE (6)
 L’arbre est un TAD très « riche » : le nombre d’axiomes
est très grand et variable selon l’application
 estVide (fils(v)) = estFeuille(v, T) {opération sur Listes}
 Père (v) est définie ssi estRacine(v, T) = Faux
 arbreVide (insérer_noeud(v, T)) = Faux
 arbreVide (enraciner(v, T1, T2, .., Tn)) = Faux
 arbreVide(créer_arbre( )) = Vrai
 estRacine (v, enraciner(v, T1, T2, .., Tn)) = Vrai

ALG. AVANCEE © L. B. Romdhane; ISITCom L 14


NIVEAU & HAUTEUR (1)
 Le niveau d’un nœud v est le nombre de ses ancêtres
 si v est la racine alors son niveau est 0

 sinon le niveau de v est : 1 + niveau du père de v

 La hauteur d’un nœud v est définie par :


 si v est un nœud feuille alors sa hauteur est 0

 sinon la hauteur de v est 1 + maximum des hauteurs de ses


fils

 La hauteur d’un arbre est la hauteur de sa racine

ALG. AVANCEE © L. B. Romdhane; ISITCom L 15


NIVEAU & HAUTEUR (2)
niveau 0 r

niveau 1 b c d

niveau 2 f j g h i e
• nœud b
• niveau = 1
niveau 3 z • hauteur = 2
•hauteur de l’arbre = 3

ALG. AVANCEE © L. B. Romdhane; ISITCom L 16


NIVEAU & HAUTEUR (3)
fonction hautNoeud (v : nœud; T : Arbre) : entier
VAR h : entier; w: nœud; L : Liste; P: Position
Début
si (estFeuille (v)) alors retourner(0)
sinon
h  0 , L  Fils(v)
Pour P = premier (L) à dernier (L) faire
w  obtenir_elem(P, L)
h  max ( h, hautNoeud (w, T) )
Fin Pour
hh+1
retourner (h)
FinSi
Fin.
ALG. AVANCEE © L. B. Romdhane; ISITCom L 17
NIVEAU & HAUTEUR (4)
fonction hautArbre (T : Arbre)  nivNoeud (v, T) &
: entier hautNoeud(v, T) sont en
Début O(N) (au pire des cas); N
étant le nombre de nœuds de
retourner ( hautNoeud l’arbre T
(racine(T), T))
Fin.
Fonction nivNoeud (v : nœud ;
T: Arbre) : entier
Début
si (estRacine (v)) alors
retourner(0)
sinon retourner (1 + nivNoeud
(père(v), T))
finsi
Fin.

ALG. AVANCEE © L. B. Romdhane; ISITCom L 18


TRAVERSEE D’UN ARBRE (1)
 Traverser un arbre revient à visiter ses nœuds
 Visiter un nœud revient à effectuer un certain
traitement sur ce nœud qui dépend de l’application
 affichage du contenu
 modification d’un attribut
 calcul d’une valeur; etc.
 Essentiellement deux stratégies de traversée
 Préfixé : visiter la racine, puis visiter les fils
 Postfixé : visiter les fils, puis visiter la racine

ALG. AVANCEE © L. B. Romdhane; ISITCom L 19


TRAVERSEE D’UN ARBRE (2)
Algorithme travPréfixé (v : nœud; T : Arbre)
VAR h : entier ; w: nœud ; L : Liste ; P: Position
Début
visiter (v) { dépend de l’application }
Si ( NON (estFeuille ( v, T))) alors
L  Fils (v)
Pour P = premier (L) à dernier (L) faire
w obtenir_elem (P, L)
travPréfixé (w, T)
Fin Pour
Fin Si
FIN.

ALG. AVANCEE © L. B. Romdhane; ISITCom L 20


TRAVERSEE D’UN ARBRE (3)
Algorithme travPostfixé (v : nœud; T : Arbre)
VAR h : entier ; w: nœud ; L : Liste ; P: Position
Début
Si ( NON (estFeuille ( v, T))) alors
L  Fils (v)
Pour P = premier (L) à dernier (L) faire
w  obtenir_elem (P, L)
travPostfixé (w, T)
Fin Pour
Fin Si
visiter (v) { dépend de l’application }
FIN.

ALG. AVANCEE © L. B. Romdhane; ISITCom L 21


TRAVERSEE D’UN ARBRE (4)
 visiter  afficher le
contenu d’un nœud r
 arbre ordonné : on
parcours les fils du plus « b d
c
grand » au plus « petit »
dans l’ordre alphabétique
h
 Préfixé (racine(T), T) f j i e
 r-d-i-e-c-h-b-j-g-
f-z z g
 Postfixé (racine(T), T)
 i-e-d-h-c-j-g-z-f-
b-r
ALG. AVANCEE © L. B. Romdhane; ISITCom L 22
TRAVERSEE D’UN ARBRE (5)
 Espace disque utilisé par un répertoire : taille du répertoire + taille des
fichiers dans le répertoire + l’espace utilisé par les (sous) répertoires
 Parcours postfixé
/usr/lbr/courses ; 1k 1171K
199K
971K

ASD016; 2k NT04; 1k
770K
8k
34K
155K Contents
Projects; 2k
; 200k
Grades; 8k Slides; 1k Homework; 1k

PVM; MPI;
hw2 256K 512K
chap01; chap02 hw1; hw3;
;
57k ; 97k 20k 3k
10k

ALG. AVANCEE © L. B. Romdhane; ISITCom L 23


TRAVERSEE D’UN ARBRE (6)
 Générer la table des matières d’un texte (Liste)
 visiter
 une feuille (paragraphe) ou la racine : ne rien faire
 sinon ajouter en fin de Liste : niveau - titre - page
 Parcours préfixé Livre

–Préface .................... a
–Ch1............................b Préface Ch 1 Ch2 ••• Biblio
•§1.1........................b
•§1.2........................c
¶ §1.1 §1.2
–Ch2............................d ¶
¶ ... ¶
–...
–Biblio.........................z ¶ ¶ ¶ ¶

ALG. AVANCEE © L. B. Romdhane; ISITCom L 24


IMPLEMENTATION (1)
 L’implémentation dynamique est la plus adéquate
pour un arbre
 Pour chaque nœud, on doit connaître
 la liste des fils; ainsi que l’ordre de parcours pour un
arbre ordonnée
 le nœud père (s’il est défini)

 l’élément stocké dans ce nœud : (entier, structure, etc.)

 le(s) frère(s)

ALG. AVANCEE © L. B. Romdhane; ISITCom L 25


IMPLEMENTATION (2)
 la liste des fils
 une liste (simplement ou doublement) chaînée - la plus
utilisée

père élém frère

• • • • • • • • •

fils1 fils2 filsN


• • • • • • • • •

ALG. AVANCEE © L. B. Romdhane; ISITCom L 26


IMPLEMENTATION (3)
 la liste des fils
 Un tableau de pointeurs contenant les @ des noeuds fils
• la liste des frères est obtenue en remontant au père
• L’accès à un fils quelconque est directe
• problème de la taille LMAX du tableau ?
élém
père • f1 ... fn
• F1 ... Fm • •
• •
f1 fn
• f11 ... f1p • fn1 ... fnz
• • • •

ALG. AVANCEE © L. B. Romdhane; ISITCom L 27


IMPLEMENTATION (4)
Une 1ère SD Une 2ème SD
 nœud = Structure  nœud = Structure
n_père : PointeurSur nœud n_père : PointeurSur nœud
n_fils : PointeurSur nœud n_fils : tableau[LMAX] de
n_frèreG : PointeurSur nœud PointeurSur nœud
n_frèreD : PointeurSur nœud nbfils : 0..LMAX
elt : element
elt : element
Fin Structure Fin Structure
 Arbre = PointeurSur
 Arbre = PointeurSur
noeud
noeud
ALG. AVANCEE © L. B. Romdhane; ISITCom L 28
IMPLEMENTATION (5)
Opération Complexité
enraciner O(N) ; N étant le nombre d’arbres
à enraciner
racine O(1)
fils O(cv) ; cv désigne le nombre de fils

père O(1)
frères O(1)
estRacine O(1)
estFeuille O(1)
arbre_vide O(1)

ALG. AVANCEE © L. B. Romdhane; ISITCom L 29


DISCUSSION
 Les arbres forme un concept fondamental en sciences
informatiques dont les domaines d’applications sont
diverses : traitement des images, analyse des
algorithmes, IA, etc.
 Dans certains problèmes, on trouve des propriétés, qui
donnent des arbres ayant des propriétés particulières
 arbres binaires, arbres binaires de recherche
 arbres AVL
 arbres 2 couleurs (red-black trees)
 …

ALG. AVANCEE © L. B. Romdhane; ISITCom L 30