Cours Réalisé Par NEFZI Mounir Année Universitaire 2023-2024
Cours Réalisé Par NEFZI Mounir Année Universitaire 2023-2024
Cours Réalisé Par NEFZI Mounir Année Universitaire 2023-2024
NEFZI Mounir
Année universitaire
2023-2024
1
Plan
•Motivations
•Définition
•Terminologie et Arbres Binaires
•Insertion dans un ABR
•Parcours en profondeur d’un ABR
•Arbres Binaires de Recherche
•Insertion dans un ABR
•Parcours d'un ABR
2
Motivations
Les structures ( Tableaux, listes, piles et files) sont des structures linéaires:
Les données sont organisées de manière ordonnée les uns à la suite des autres
Pour chercher un élément, nous sommes obligés de parcourir toute la structure de donnée
jusqu’à le trouver.
La recherche d’un élément dans un arbre binaire de recherche est beaucoup plus rapide
que la recherche dans une structure de donnée linéaire.
3
Les Arbres
4
Définition
Un arbre est une structure de données composée d’un ensemble de nœuds.
Chaque nœud contient les données spécifiques de l’application et des pointeurs
vers d’autres nœuds (d’autres sous-arbres).
Plusieurs traitements en informatique sont de nature arborescente tel que:
• La représentation des expressions arithmétiques,.. Etc.
• La hiérarchie des répertoires et des fichiers
root
… Home
… Cours
Algo Programmation C 5
Terminologie et mesures
6
Terminologie(1)
Nœud Racine
Sous Arbre
7
Terminologie(2)
▪ Le nœud qui n’a pas de successeur s’appelle feuille (Exemples: E,F,L,M,I)
▪ Un nœud descendant n d’un autre nœud X est tout nœud se trouvant dans
le chemin partant du nœud X jusqu’à une feuille ( y compris le nœud
feuille).
▪ Un nœud ascendant n d’un autre nœud X est tout nœud se trouvant dans le
chemin partant du nœud X jusqu’à la racine( y compris la racine).
8
Mesures sur les arbres(1)
Taille d’un arbre
▪ Le niveau de la racine = 0
Niveau 2 E F H I
▪ Le niveau de chaque nœud = niveau
▪ Niveau de {E,F,H,I} = 2
9
Mesures sur les arbres(2)
Profondeur (Hauteur) d’un arbre
A
▪ C’est le niveau maximum dans cet arbre.
Profondeur de l’arbre suivant = 3
B C
Degré d’un nœud
▪ Le degré d’un nœud est égal au nombre de ses fils. E F H I
▪ Degré de (A = 2, B =2, C = 2, E= 0, H=2)
L M
Degré d’un arbre
▪ C’est le degré maximum de ses nœuds.
Degré de l’arbre = 2
Le degré d’un arbre binaire est égal à 2.
Si le degré d’un arbre est égal à N, l’arbre est dit
N-aire.
10
Arbres Binaires
11
Définition (1)
Un arbre binaire est un arbre où chaque nœud a un fils gauche, un fils
droit ou les deux à la fois.
12
Arbre binaire Arbre non binaire
Définition (2)
Si chaque nœud autre qu’une feuille admet deux descendants et si
toutes les feuilles sont au même niveau, on dit que l’arbre binaire
est complet.
13
Arbres Binaires de
Recherche
14
Définition
X racine
Un arbre binaire A de racine X est dit arbre binaire de
recherche (ABR) si et seulement si :
15
Exemples:
16
Exemple: ABR d'entiers
12
5 15
35
21
30
17
Exemple: ABR d'entiers
5 15
35
21 12
30
18
Exemple: ABR d'entiers
15
35
21 12
30
19
Exemple: ABR d'entiers
15
35
12
8
21
30
5
20
Structure
3 types de données sont stockées dans un nœud. :
▪La donnée data
▪Un pointeur de type Nœud vers le sous arbre gauche
▪Un pointeur de type Nœud vers le sous arbre droit
Relations entre types: Structure récursive
▪Un arbre binaire est caractérisé par une racine qui est un nœud
▪Les descendants d’un nœud sont des arbres binaires
définition récursive de l'arbre en fonction d'elle-même.
Solution : les descendants d'un nœud sont des pointeurs vers
d'autres nœuds.
21
Structure
Struct Nœud
{
TYPE data; // data peut avoir n'importe quel type
Struct Nœud * FG; // FG et FD sont deux pointeur vers
d'autres noeuds */
Struct Nœud * FD;
};
23
Insérer un Nœud (1)
Fonction récursive d’ajout d’un élément :
25
Insérer un Nœud (3)
26
Insérer un Nœud (4)
27
Parcours d'un ABR
28
Définition
Le parcours d’un arbre consiste à passer par tous ses
nœuds pour en effectuer un traitement.
✔ Parcours en profondeur
✔ Parcours en largeur
29
Parcours en profondeur
30
Parcours en Profondeur
31
Parcours préfixé
32
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
33
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
34
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
35
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
36
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
37
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
38
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
39
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
40
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
41
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
42
Parcours Préfixé
La racine est traitée en premier
1 Traiter la racine
2 Parcours préfixé du SAG
Parcours préfixé : A, B, E, H, L, D, F, G, M, N.
43
Parcours Préfixé
44
Parcours Infixé
45
Parcours Infixé
La racine est traitée entre les deux appels récursifs
46
Parcours Infixé
La racine est traitée entre les deux appels récursifs
47
Parcours Infixé
La racine est traitée entre les deux appels récursifs
48
Parcours Infixé
La racine est traitée entre les deux appels récursifs
49
Parcours Infixé
La racine est traitée entre les deux appels récursifs
50
Parcours Infixé
La racine est traitée entre les deux appels récursifs
51
Parcours Infixé
La racine est traitée entre les deux appels récursifs
52
Parcours Infixé
La racine est traitée entre les deux appels récursifs
53
Parcours Infixé
La racine est traitée entre les deux appels récursifs
54
Parcours Infixé
La racine est traitée entre les deux appels récursifs
55
Parcours Infixé
La racine est traitée entre les deux appels récursifs
Parcours infixé : H, E, L, B, A, F, D, M, G, N.
56
Parcours Infixé
Afficher les valeurs des nœuds de l’arbre
57
Parcours Infixé
Exemple d’application:
58
Parcours Postfixé
59
Parcours Postfixé
La racine est traitée après les deux appels récursifs
60
Parcours Postfixé
La racine est traitée après les deux appels récursifs
61
Parcours Postfixé
La racine est traitée après les deux appels récursifs
62
Parcours Postfixé
La racine est traitée après les deux appels récursifs
63
Parcours Postfixé
La racine est traitée après les deux appels récursifs
64
Parcours Postfixé
La racine est traitée après les deux appels récursifs
65
Parcours Postfixé
La racine est traitée après les deux appels récursifs
66
Parcours Postfixé
La racine est traitée après les deux appels récursifs
67
Parcours Postfixé
La racine est traitée après les deux appels récursifs
68
Parcours Postfixé
La racine est traitée après les deux appels récursifs
69
Parcours Postfixé
La racine est traitée après les deux appels récursifs
Parcours postfixé : H, L, E, B, F, M, N, G, D, A.
70
Parcours Postfixé
71
Conclusion
72
Conclusion
73
Références
F. Guyomarch : Algorithmique avancée Arbres binaires de recherche
2015/2016.
S. Hamel IFT2810, Arbres de Recherche, 2009.
J.M. ENJALBERT : Algorithmique et langage C.
74