Вы находитесь на странице: 1из 39

Structure de donnes

Arbre binaire

Plan de la leon

Les arbres pourquoi ?


Arbres binaires
Arbres Binaires de Recherche

Les arbres pourquoi ?


Modle pour les structures hirarchises

Expressions algbriques
4-(3+12*(9-5))*6

4
La priorit des oprations
apparat clairement

6
*

12
9

Les arbres pourquoi ?


Compilation
Arbres syntaxiques

Inst

Si-alors-sinon

Si a>b Alors c=a;


sinon c=b;

Exp
a

>

Inst

Inst

c =a

c =b

Les arbres pourquoi ?


IA

in

Arbres de dcision

1
B
1

C
2

3
A

out

C
D

Les arbres pourquoi ?


IA

Dbut du jeu

Arbres de jeux

1
1
Le joueur A
Le joueur B

1
1

2
2

3
2
Le gagnant

Les arbres pourquoi ?

Atouts
Acclre la recherche
en diminuant le nombre
de comparaisons

Les arbres cest quoi ?


Dfinition rcursive
Un arbre de type de base T est

soit une feuille (parfois structure vide)


soit un nud de type T, racine,
auquel est associ un nombre
fini de sous arbres

Les arbres cest quoi ?


Terminologie
racine

pre

fils

feuille

Les arbres
binaires

Les arbres binaires


Tout nud interne
possde au plus
deux fils

Dfinition

Un arbre est un graphe ?


non

oui

perdu

Cyclique ?
non

Connexe ?
perdu

gagn

oui

perdu

Les arbres binaires


Reprsentation par structure pointe
Allocation dynamique des nuds
racine
A
B

C
D

Les arbres binaires


Reprsentation par structure pointe

racine

A
B

C
D

Les arbres binaires


Reprsentation par tableau
Des indices la place de pointeurs

val

gauche

droit

-1

-1

-1

-1

-1

-1

racine
A

C
D

Les arbres binaires


Reprsentation par tableau

racine
A
B

C
D

Les arbres binaires


TDA : Construction

feuille

Les arbres binaires


TDA : Construction

pere

x
ag

ad

Les arbres binaires


TDA : Oprateurs
(Pour tous les arbres)
profondeur maximale
taille en nombre de nuds

Exploration de l'arbre

Les arbres binaires


TDA : Oprateurs

Les arbres binaires


TDA : Oprateurs/Exploration
Opration qui consiste traiter chaque nud
une seule fois d'une faon systmatique
55
34
20
10
22

58
49

25

38

50

Les arbres binaires


TDA : Oprateurs/Exploration

Il y a trois faons de traverser un arbre

pr ordre
in ordre

:R,G,D
R

:G,R,D

post ordre : G , D , R

Les arbres binaires


TDA : Exploration en inordre
Traverse en profondeur
55
34

G,R ,D
20

10
22

58
49

25

38

50

Les arbres binaires


TDA : Exploration en inordre

55
34
20

10
22

58
49

25

38

50

Les arbres binaires


fibo(0)=1
fibo(1)=1
fibo(n)= fibo(n-1) + fibo(n-2) pour n>1

Appels : reprsents par un arbre binaire


quel parcours correspond ces appels ?
fibo(3)

R, G, D

fibo(2)

fibo(0)

fibo(1)

fibo(1)

Les arbres binaires


TDA : Autres oprateurs
Il faut conserver l'ordre et le contexte

Exemple
Arborescence de fichiers
Ne dtruire un fichier que
s'il est feuille de l'arbre

Les arbres binaires


TDA : Autres oprateurs
Il faut conserver l'ordre et le contexte
Pour les arbres ordonns surtout
Ajout d'un lment
Extraction d'un nud
Recherche d'un lment

Arbres Binaires
de Recherche

Arbres Binaires de Recherche


Arbre ordonn horizontalement
La cl d'un nud est:
infrieure toutes celles
de son sous arbre droit
55

< 55

> 55

suprieure toutes celles


de son sous arbre gauche

Arbres Binaires de Recherche


Arbre ordonn horizontalement
Construction dun ABR
55 34 49 20 38 58 10 50 25 22

La forme finale dpend des


valeurs et de l'ordre d'entre
de ces valeurs

55
34

20

10
22

25

58
49

38

50

Arbres Binaires de Recherche


Recherche dans un ABR
Dichotomique

racine
55
34
20
10
22

recherche(38,racine);

58

49
25

38

50

Arbres Binaires de Recherche


Recherche dans un ABR
r
r 55
34 r
20
10

22

58

r 49
25

38

50

Arbres Binaires de Recherche

Arbres Binaires de Recherche


Ajout dans un ABR
racine
Recherche
+
Insertion
racine=ajout(24,racine);

55

34
20
10

58
49

25

22

24

38

50

Arbres Binaires de Recherche


Ajout dans un ABR
Recherche rcursive de la place
pour accrocher la feuille
20
10

25

22

24

Arbres Binaires de Recherche


Ajout dans un ABR
racine

Accrocher la feuille

55

34
20
10

58
49

25

22 rac

38

50

Arbres Binaires de Recherche

Arbres Binaires de Recherche


racine

racine
r

55

55
58

ajout (58,racine):
ajout (x, r->droit)
r->droit =Malloc(); // qui change
Donc :
r->droit= ajout (x, r->droit); // obligatoire

Arbres Binaires de Recherche


racine

racine
r

NULL

55

ajout (55,racine);
r==racine == NULL
r = Malloc(); // r change
Donc :
racine = ajout(55,racine); // obligatoire

Arbres Binaires de Recherche