Vous êtes sur la page 1sur 43

Arbres

Stéphane Grandcolas

stephane.grandcolas@univ-amu.fr

Arbres – Stéphane Grandcolas – p. 1/38


Arbres

Un arbre syntaxique représentant une expression


arithmétique

− +

/ t 75 z

y 2

(y/2 − t) × (75 + z)

Arbres – Stéphane Grandcolas – p. 2/38


Arbres

Un arbre syntaxique représentant l’analyse d’une phrase


phrase

groupe nominal groupe verbal

article nom commun verbe complément

le chat lit article nom commun

le livre

Arbres – Stéphane Grandcolas – p. 3/38


Arbres

Un arbre généalogique descendant

Georges
Ginette

Paul Lilly Tom


Victor Naomi

Mattéo Lucie Théo Mélanie Léon

Arbres – Stéphane Grandcolas – p. 4/38


Arbres

Un arbre lexicographique, ou arbre en parties communes, ou


dictionnaire
. main
male
mie
m p
mite
pic
a i i o
pile
i l e t c l s r pis
port
n e e e t
porte
e

Arbres – Stéphane Grandcolas – p. 5/38


Arbres : définition 1

Un arbre est un ensemble organisé de noeuds :


chaque noeud a un père et un seul,
un seul noeud la racine n’a pas de père.
racine

Les fils d’un noeud p sont les noeuds


dont le père est p

Les feuilles d’un arbre sont


les noeuds qui n’ont pas de fils

feuilles

Arbres – Stéphane Grandcolas – p. 6/38


Arbres : définition 2 (récursive)

Un arbre est constitué


d’un noeud p, sa racine,
d’une suite de sous-arbres (a1 , a2 , . . . , ak ).
Les racines des arbres a1 , a2 , . . . , ak sont les fils de p
p

....

a1 a2 ak

Arbres – Stéphane Grandcolas – p. 7/38


Arbres : définition 3 (graphes)

Un graphe G = (S, A) est défini par


l’ensemble de ses sommets S
et l’ensemble de ses arêtes A

4
2
6
5 9

10

3
7 8
1

Arbres – Stéphane Grandcolas – p. 8/38


Arbres : définition 3 (graphes)

Un chemin dans un graphe est une séquence de sommets


hs0 , s1 , . . . , sk i telle qu’il existe une arête entre chaque couple
(si , si+1 ).
Un graphe est connexe s’il existe un chemin entre tout couple
de sommets.
4
2
6
5 9

10

3
7 8
1

Arbres – Stéphane Grandcolas – p. 9/38


Arbres : définition 3 (graphes)

Un cycle est une séquence de sommets hs0 , s1 , . . . , sk i, k ≥ 3,


telle que s0 = sk , les sommets s1 , . . . , sk sont distincts, et il
existe une arête entre chaque couple (si , si+1 ).

4
2
6
5 9

10

3
7 8
1

Arbres – Stéphane Grandcolas – p. 10/38


Arbres : définition 3 (graphes)

Un arbre est un graphe connexe sans cycles muni d’un


sommet particulier, sa racine.

racine

feuilles

Arbres – Stéphane Grandcolas – p. 11/38


Arbres : définition 3 (graphes)

Soit G un graphe, les propositions suivantes sont


équivalentes :
G est un arbre,
pour tout couple de sommets u, v il existe un chemin et
un seul allant de u à v,
la suppression d’une arête quelconque rends G non
connexe
G est connexe et |A| = |S| − 1
G est acyclique et |A| = |S| − 1
G est acyclique et l’ajout d’une arête quelconque crée un
cycle

Arbres – Stéphane Grandcolas – p. 12/38


Arbres : définitions

racine
niveaux
noeud de degré 3
chemin à la racine
ancetre

profondeur=2 hauteur=5

descendant frère

Arbres – Stéphane Grandcolas – p. 13/38


Arbres binaires

Chaque noeud a au plus 2 fils : le fils gauche et le fils droit


sous−arbre droit
sous−arbre gauche (sa racine est )
(sa racine est )

fils droit

fils gauche

Arbres – Stéphane Grandcolas – p. 14/38


Arbres binaires
racine
1

nombre de noeuds
2

16

Arbre binaire complet de hauteur h


à la profondeur p on a 2p noeuds
X
h−1
le nombre total de noeuds est donc 2i = 2h − 1
i=0

Un arbre quelconque de hauteur h contient au plus 2h − 1 noeuds


(hauteur = nombre de niveaux)

Arbres – Stéphane Grandcolas – p. 15/38


Arbres binaires : représentation

Arbre vide : 

Arbre non vide : triplet p = h x, G, D i


x est l’information ou étiquette ou valeur,
G est le sous-arbre gauche de p, noté f ilsG(p),
D est le sous-arbre droit de p, noté f ilsD(p).

8 x
h+, h8, , i, h×, h+, h75, , i, h4, , ii, h61, , iii

+ 61

75 4

Arbres – Stéphane Grandcolas – p. 16/38


Arbres binaires : implémentation

Définition du type ARBRE, pointeur sur un noeud


typedef struct noeud *ARBRE ;

Ici eventuellement l’inclusion d’autres définitions


utilisant le type ARBRE déja défini

struct noeud
{
TYPE_VALEUR val;
ARBRE fg, fd;
};

Arbres – Stéphane Grandcolas – p. 17/38


Arbres binaires : implémentation

12 a−>fg 12 a−>fg−>fd

1 7 1 7

91 67 82 91 67 82

14 11
14 11

Arbres – Stéphane Grandcolas – p. 18/38


Arbres binaires : implémentation

Fonction de création d’un nouveau noeud


ARBRE CreerNoeud(VALEUR v, ARBRE fg, ARBRE fd)
{
ARBRE p;
p = malloc(sizeof(struct noeud));
assert(p != NULL);
p->val = v;
p->fg = fg;
p->fd = fd;
return p;
}

ARBRE a;
a = CreerNoeud(x, p, NULL);

Arbres – Stéphane Grandcolas – p. 19/38


Arbres binaires : parcours en profondeur

Principe : parcourir récursivement les fils dans l’ordre fils


gauche puis fils droit.
void Parcours(ARBRE a)
{
if (a != NULL)
{
/* traitement avant */
Parcours (a->fg);
/* traitement entre */
Parcours (a->fd);
/* traitement apres */
}
}

Arbres – Stéphane Grandcolas – p. 20/38


Arbres binaires : parcours préfixé (affichage)

Parcours préfixe : affichage de la valeur d’un noeud avant les


valeurs figurant dans ses sous-arbres
1
void ParcoursPrefixe(ARBRE a) 12
{
2 5
if (a != NULL)
1 7
{
AfficherLaValeur(a->val); 3 4 6

ParcoursPrefixe (a->fg); 91 67 82
ParcoursPrefixe (a->fd); 7
} 61
}
12 1 91 67 7 82 61

Arbres – Stéphane Grandcolas – p. 21/38


Arbres binaires : parcours infixé (affichage)

Parcours infixé : affichage de la valeur d’un noeud après les


valeurs figurant dans son sous-arbre gauche et avant les
valeurs figurant dans son sous-arbre droit
4
void ParcoursInfixe(ARBRE a) 12
{
2 5
if (a != NULL)
1 7
{
ParcoursInfixe (a->fg); 1 3 7

AfficherLaValeur(a->val); 91 67 82
ParcoursInfixe (a->fd); 6
} 61
}
91 1 67 12 7 61 82

Arbres – Stéphane Grandcolas – p. 22/38


Arbres binaires : parcours postfixé (affichage)

Parcours postfixé : affichage de la valeur d’un noeud après les


valeurs figurant dans ses sous-arbres
7
12
3 6
1 7

1 2 5
91 67 82
4
61

91 67 1 61 82 7 12

Arbres – Stéphane Grandcolas – p. 23/38


Arbres binaires : hauteur

La hauteur h(a) d’un arbre binaire a de n noeuds


Proposition.
est au moins égale à log2 n.
a
Preuve. Par récurrence en utilisant la propriété
h(a) = max(h(A1 ), h(A2 )) + 1

Supposons n1 ≥ n2, et donc n1 ≥ n/2.


Hypothèse : h(A1 ) ≥ log2 n1 .
Donc h(A1 ) ≥ log2 (n/2) = log2 n − 1. A1 A2
Puisque h(a) ≥ h(A1 ) + 1 ≥ log2 n − 1 + 1,
on a h(a) ≥ log2 n. n1 noeuds n2 noeuds

C’est aussi vrai si n est le nombre de feuilles.

Arbres – Stéphane Grandcolas – p. 24/38


Arbres binaires de recherche

Soit E un ensemble muni d’une relation d’ordre


Un arbre binaire a étiqueté avec des éléments de E est un
arbre binaire de recherche si pour tout noeud p = hx, G, Di
∀q ∈ G, val(q) ≤ x,
∀q ∈ D, val(q) ≥ x.

Arbres – Stéphane Grandcolas – p. 25/38


Arbres binaires de recherche

valeurs inférieures à 34 p
34

22 66

7 29 50 71

17 25 32 37 56 70 81

9 21 23 28 30 36 44 55 68 80 97

8 16 27 35 52 67 69 94

26 51 88

valeurs comprises plus petit plus grand que 66


entre 22 et 29 dans le sous arbre p

Arbres – Stéphane Grandcolas – p. 26/38


Arbres binaires de recherche

Définition du type.
typedef struct noeud *ARBRE;

struct noeud
{
VALEUR val;
ARBRE fg, fd, pere;
};

L’accès au père est utile par exemple pour chercher le successeur d’un
noeud

Arbres – Stéphane Grandcolas – p. 27/38


Arbres binaires de recherche : parcours infixé

Le parcours infixé de l’arbre produit la suite ordonnée des


clés
16
34
7
22 66
1 13
7 29 50 71
5 9 15
17 25 32 37 56 70 81
3 6 8 12
9 21 23 28 30 14 36 44 55 68 80 97
2 4 17
11
8 16 27 35 52 67 69 94
10
26 51 88

7 8 9 16 17 21 22 23 25 26 27 28 29 30 32 34 35 36 37 ...

Arbres – Stéphane Grandcolas – p. 28/38


Arbres binaires de recherche : recherche d’une clé

Idée : descendre à gauche ou à droite suivant la valeur de la


clé tant que la valeur n’est pas trouvée (et qu’on peut
descendre)
recherche de la valeur 27

34
<34

22 66
>22
7 29 50 71
<29
17 25 32 37 56 70 81
>25
9 21 23 28 30 36 44 55 68 80 97
<28
8 16 27 35 52 67 69 94

26 51 88

Arbres – Stéphane Grandcolas – p. 29/38


Arbres binaires de recherche : insertion d’une clé

Idée : on fait comme pour la recherche (ici la valeur 31)


34

22 66

8 29 50 71

17 25 32 35 56 70 81

9 21 23 28 30 34 44 55 69 80 97

8 16 27 34 52 67 69 94

26 51 88

Arbres – Stéphane Grandcolas – p. 30/38


Arbres binaires de recherche : insertion d’une clé

Idée : on fait comme pour la recherche (ici la valeur 31)


34

22 66

8 29 50 71

17 25 32 35 56 70 81

9 21 23 28 30 34 44 55 69 80 97

8 16 27 31 34 52 67 69 94

26 51 88

Arbres – Stéphane Grandcolas – p. 30/38


Arbres binaires de recherche : successeur

32 n’a pas de fils droit :


son successeur est 34, premier ascendant de 32 66 a un fils droit :
tel que 32 figure dans son sous−arbre gauche son successeur est 67
dernier fils gauche de
34
son sous−arbre gauche

22 66

7 29 50 71

17 25 32 37 56 70 81

9 21 23 28 30 36 44 55 68 80 97

8 16 27 31 35 52 67 69 94

26 51 88

Arbres – Stéphane Grandcolas – p. 31/38


Arbres binaires de recherche : suppression

Cas 1 : le noeud n’a pas de fils (feuille)


34

22 66

7 29 50 71

17 25 32 37 56 70 81

9 21 23 28 30 36 44 55 68 80 97

8 16 27 31 35 52 67 69 94

26 51 88

Arbres – Stéphane Grandcolas – p. 32/38


Arbres binaires de recherche : suppression

Cas 1 : le noeud n’a pas de fils (feuille)


34

22 66

7 29 50 71

17 25 32 37 56 70 81

9 21 23 28 30 36 44 55 68 80 97

8 16 27 31 35 52 69 94

26 51 88

Arbres – Stéphane Grandcolas – p. 32/38


Arbres binaires de recherche : suppression

Cas 2 : le noeud a un fils et un seul


34

22 66

8 29 50 71

17 25 32 35 56 70 81

9 21 23 28 30 34 44 55 68 80 97

8 16 27 31 34 52 69 94

26 51 88

Arbres – Stéphane Grandcolas – p. 33/38


Arbres binaires de recherche : suppression

Cas 2 : le noeud a un fils et un seul


34

22 66

8 29 50 71

17 25 32 35 56 70 81

9 21 23 28 30 34 44 55 69 80 97

8 16 27 31 34 52 94

26 51 88

Arbres – Stéphane Grandcolas – p. 33/38


Arbres binaires de recherche : suppression

Cas 3 : le noeud a deux fils


34

22 66

8 29 50 71

17 25 32 35 56 70 81

9 21 23 28 30 34 44 55 69 80 97

8 16 27 31 34 52 94

26 51 88

plus grand plus petit


des plus petits des plus grands

Arbres – Stéphane Grandcolas – p. 34/38


Arbres binaires de recherche : suppression

Cas 3 : le noeud a deux fils


34

22 66

8 29 50 71

17 25 32 35 56 70 81

9 21 23 28 30 34 44 55 69 80 97

8 16 27 31 34 52 94

26 51 88

Arbres – Stéphane Grandcolas – p. 34/38


Arbres binaires de recherche : suppression

Cas 3 : le noeud a deux fils


34

22 56

8 29 50 71

17 25 32 35 55 70 81

9 21 23 28 30 34 44 52 69 80 97

8 16 27 31 34 51 94

26 88

Arbres – Stéphane Grandcolas – p. 34/38


Arbres n-aires

racine

fils ainé
frères
.....

a1 a2 ak

Arbres – Stéphane Grandcolas – p. 35/38


Arbres n-aires : implémentation

Chaque noeud porte une valeur et la liste de ses fils

typedef struct noeud * ARBREn;


typedef struct maillon * LISTE_DARBRES;

struct noeud
{
TYPE_VALEUR val;
LISTE_DARBRES fils;
};

struct maillon
{
ARBREn le_fils;
LISTE_DARBRES suiv;
};

Arbres – Stéphane Grandcolas – p. 36/38


Arbres n-aires : implémentation

Forme condensée avec une seule structure : un lien vers le


fils aîné et un lien vers le frère

typedef struct noeud * ARBREn;

struct noeud
{
TYPE_VALEUR val;
ARBREn fa;
ARBREn fr;
};

Arbres – Stéphane Grandcolas – p. 37/38


Arbres n-aires : arbres lexicographiques
racine

A D

I R U E

R L T * X *

* * * *

Arbres – Stéphane Grandcolas – p. 38/38

Vous aimerez peut-être aussi

  • E Services
    E Services
    Document344 pages
    E Services
    Mohamed El Haddad
    Pas encore d'évaluation
  • Nodejs
    Nodejs
    Document20 pages
    Nodejs
    Mohamed El Haddad
    Pas encore d'évaluation
  • PL2 15servlets
    PL2 15servlets
    Document64 pages
    PL2 15servlets
    Mohamed El Haddad
    Pas encore d'évaluation
  • Web Ada
    Web Ada
    Document145 pages
    Web Ada
    Mohamed El Haddad
    Pas encore d'évaluation
  • TP7 2018
    TP7 2018
    Document4 pages
    TP7 2018
    Mohamed El Haddad
    Pas encore d'évaluation
  • CM M1IF13 Spring
    CM M1IF13 Spring
    Document55 pages
    CM M1IF13 Spring
    Mohamed El Haddad
    Pas encore d'évaluation
  • TP JSF
    TP JSF
    Document40 pages
    TP JSF
    Mohamed El Haddad
    Pas encore d'évaluation
  • MCD PDF
    MCD PDF
    Document33 pages
    MCD PDF
    Mohamed El Haddad
    Pas encore d'évaluation
  • Stat GM
    Stat GM
    Document5 pages
    Stat GM
    Mohamed El Haddad
    Pas encore d'évaluation
  • Arbre Binaire
    Arbre Binaire
    Document23 pages
    Arbre Binaire
    Hamid El Bouabidi
    Pas encore d'évaluation
  • CoursTD3 Fin
    CoursTD3 Fin
    Document12 pages
    CoursTD3 Fin
    AyOùb
    Pas encore d'évaluation
  • Algorithmique Cours 9 - Arbres
    Algorithmique Cours 9 - Arbres
    Document89 pages
    Algorithmique Cours 9 - Arbres
    Moh Moh
    Pas encore d'évaluation
  • Listes Et Arbres Binaires: Listes Chaînées
    Listes Et Arbres Binaires: Listes Chaînées
    Document15 pages
    Listes Et Arbres Binaires: Listes Chaînées
    Ilio Break Top
    Pas encore d'évaluation
  • Graphes PDF
    Graphes PDF
    Document78 pages
    Graphes PDF
    nogoodskam
    Pas encore d'évaluation
  • TD 1 Corrige
    TD 1 Corrige
    Document4 pages
    TD 1 Corrige
    Mohammed Rammeh
    Pas encore d'évaluation
  • Arbres
    Arbres
    Document4 pages
    Arbres
    neiflhem
    Pas encore d'évaluation
  • 06 Arbres PDF
    06 Arbres PDF
    Document81 pages
    06 Arbres PDF
    Ulrich Ekeu
    Pas encore d'évaluation
  • Serie Algo Arbre
    Serie Algo Arbre
    Document13 pages
    Serie Algo Arbre
    Seif Chelséwi Van Yedder
    Pas encore d'évaluation
  • Les Arbres Parcours
    Les Arbres Parcours
    Document23 pages
    Les Arbres Parcours
    Samah Sam Bouima
    Pas encore d'évaluation
  • Sda Td5 Arbres Equilibres Corrige
    Sda Td5 Arbres Equilibres Corrige
    Document8 pages
    Sda Td5 Arbres Equilibres Corrige
    Mohammed Rammeh
    Pas encore d'évaluation
  • Arbres AVL Et RB
    Arbres AVL Et RB
    Document37 pages
    Arbres AVL Et RB
    Layl Zan
    Pas encore d'évaluation
  • Algorithmique Et Structures de Données II
    Algorithmique Et Structures de Données II
    Document54 pages
    Algorithmique Et Structures de Données II
    Riadh BOUSLIMI
    100% (3)
  • Arbres Avl Et RB
    Arbres Avl Et RB
    Document44 pages
    Arbres Avl Et RB
    Layl Zan
    Pas encore d'évaluation
  • Elements
    Elements
    Document484 pages
    Elements
    Youcef Benjillali
    Pas encore d'évaluation
  • Exercices Corrigés D'algorithmique
    Exercices Corrigés D'algorithmique
    Document54 pages
    Exercices Corrigés D'algorithmique
    Yassine Yassine
    91% (22)