View
220
Download
1
Category
Preview:
DESCRIPTION
cours sd lecon 3 2
Citation preview
Structure de données
Arbre binaire
Plan de la leçon
Les arbres pourquoi ?
Arbres binaires
Arbres Binaires de Recherche
Expressions algébriques
4-(3+12*(9-5))*6
La priorité des opérations apparaît clairement
-
*
+
*
-
4
3
12
9 5
6
Modèle pour les structures hiérarchisées
Les arbres pourquoi ?
Compilation
Arbres syntaxiques
Si a>b Alors c=a; sinon c=b;
Exp
Si-alors-sinon
Inst Inst
c =a c =b
Inst
> ba
Les arbres pourquoi ?
1
3
2
A
B
D
C
1
A 2
3
B
C
Dout
in
Les arbres pourquoi ?
Arbres de décision
IA
Arbres de jeuxDébut du jeu
Le gagnant
1
1 32Le joueur A
1
1 32Le joueur B
2 3
Les arbres pourquoi ?
IA
Atouts
Accélère la recherche
en diminuant le nombre de comparaisons
Les arbres pourquoi ?
Définition récursive
Un arbre de type de base T est
soit une feuille (parfois structure vide)
soit un nœud de type T, racine, auquel est associé un nombrefini de sous arbres
Les arbres c’est quoi ?
Terminologie
père
racine
fils
feuille
Les arbres c’est quoi ?
Les arbres binaires
Tout nœud internepossède au plus
deux fils
Un arbre est un graphe ?
Cyclique ?
non oui
perdu
perdu
gagné
ouinon
Connexe ?
perdu
Définition
Les arbres binaires
Représentation par structure pointée
Allocation dynamique des nœuds
A
CB
ED
racine
Les arbres binaires
Les arbres binaires
Représentation par structure pointée
A
CB
ED
racine
Des indices à la place de pointeurs
Les arbres binaires
Représentation par tableau
val gauche droit
0 A 1 2
1 B -1 -1
2 C 3 4
3 D -1 -1
4 E -1 -1
A
CB
ED
racine
Les arbres binaires
Représentation par tableau
A
CB
ED
racine
x
feuille
Les arbres binaires
TDA : Construction
Les arbres binaires
TDA : Construction
ag ad
x
pere
(Pour tous les arbres)
profondeur maximale
taille en nombre de nœuds
Exploration de l'arbre
…
Les arbres binaires
TDA : Opérateurs
r
Les arbres binaires
TDA : Opérateurs
Opération qui consiste à traiter chaque nœud une seule fois d'une façon systématique
55
49
5834
10 50
22
3825
20
Les arbres binaires
TDA : Opérateurs/Exploration
Il y a trois façons de traverser un arbre
pré ordre : R , G , D
in ordre : G , R , D
post ordre : G , D , R
R
G D
Les arbres binaires
TDA : Opérateurs/Exploration
Traversée en profondeur
G , R , D
55
49
5834
10 50
22
3825
20
Les arbres binaires
TDA : Exploration en inordre
Les arbres binaires
55
49
5834
10 50
22
3825
20
TDA : Exploration en inordre
Les arbres binaires
Appels : représentés par un arbre binaire
fibo(0)=1
fibo(1)=1
fibo(n)= fibo(n-1) + fibo(n-2) pour n>1
À quel parcours correspond ces appels ?
fibo(3)
fibo(2) fibo(1)
fibo(0) fibo(1)
R, G, D
Il faut conserver l'ordre et le contexte
Exemple
Arborescence de fichiers
Ne détruire un fichier ques'il est feuille de l'arbre
Les arbres binaires
TDA : Autres opérateurs
Pour les arbres ordonnés surtout
Ajout d'un élément
Recherche d'un élément
…
Extraction d'un nœud
Les arbres binaires
Il faut conserver l'ordre et le contexte
TDA : Autres opérateurs
Arbres Binaires de Recherche
Arbre ordonné horizontalement
La clé d'un nœud est:
inférieure à toutes cellesde son sous arbre droit
supérieure à toutes cellesde son sous arbre gauche
55
< 55 > 55
Arbres Binaires de Recherche
55 34 49 20 38 58 10 50 25 22
La forme finale dépend des valeurs et de l'ordre d'entrée de ces valeurs
55
49
34
20
58
10 50
22
3825
Arbres Binaires de Recherche
Arbre ordonné horizontalement
Construction d’un ABR
55
49
5834
10 50
22
3825
20
racine
recherche(38,racine);
Arbres Binaires de Recherche
Recherche dans un ABR
Dichotomique
55
49
5834
10 50
22
3825
20
r
r
r
r
Arbres Binaires de Recherche
Recherche dans un ABR
Arbres Binaires de Recherche
Recherche+
Insertion
racine
55
49
5834
10 50
22
3825
20
24
racine=ajout(24,racine);
Arbres Binaires de Recherche
Ajout dans un ABR
Recherche récursive de la place pour accrocher la feuille
10
22
25
20
24
Arbres Binaires de Recherche
Ajout dans un ABR
55
49
5834
10 50
22
3825
20
racine
x
rac
Arbres Binaires de Recherche
Accrocher la feuille
Ajout dans un ABR
Arbres Binaires de Recherche
Arbres Binaires de Recherche
ajout (58,racine):
ajout (x, r->droit)
r->droit =Malloc(); // qui change
Donc :
r->droit= ajout (x, r->droit); // obligatoire
racine
55
racine
55
58
r
Arbres Binaires de Recherche
racine
NULL
racine
55
r
ajout (55,racine);
r==racine == NULL
r = Malloc(); // r change
Donc :
racine = ajout(55,racine); // obligatoire
Arbres Binaires de Recherche
Recommended