Académique Documents
Professionnel Documents
Culture Documents
12 / 2014
1
5
4
2
2
5
5
2
2
5
5
3
Exercice 2 Les noeuds 25 et 42 ne respectent pas la propriete. Dans ce cas on peut faire une rotation gauche soit en 25 soit en 42 pour retablir lequilibre. Par exemple rotation en 42 :
42
25
12
54
63
Exercice 3 Comme on nins`ere quune feuille, la hauteur ne peut changer que pour les ancetre de cette
feuille ! Par consequent, les nuds desequilibres se trouvent tous sur le chemin allant de la nouvelle feuille
`a la racine. C
a en fait O(log(n)).
On remarque que le desequilibre (difference de hauteur) ne peut etre que de 2 (desequilibre),1 ou 0
(equilibres).
Exercice 4 Lalgorithme (page suivante) consiste `a tester, pour chaque noeud, si la difference entre les
hauteurs de chacun des deux fils est au plus 1. Cest une fonction recursive qui renvoie une valeur :
-1 si le sous-arbre est desequilibre (pas ABR)
la hauteur ( 0) du sous-abre si cest un ABR
Pour analyser la complexite, on remarque que lalgorithme sappelle recursivement exactement une fois
sur chaque nud. cest un parcours darbre classique, en O(n).
Exercice 5 On ne reprsente pas ici toutes les tapes. Linsertion se fait comme dans un ABR. Ensuite
il y'a ventuellement quelque chose faire si larbre nest plus un AVL.
25
60
35
Desequilibre `
a droite (-2) en 25. Comme au noeud 60 le desequilibre est `a gauche (+1), il faut faire
une double rotation : `a droite en 60 puis `a gauche en 25.
35
25
35
25
60
60
10
5
35
10
5
60
10
25
60
25
20
25
10
5
35
20
10
60
35
20
60
65
25
10
5
60
20
35
10
65
60
20
35
65
45
70
40
Desequilibre en 35 (en 25 aussi, mais on commence par remonter depuis le noeud que lon a ajoute).
Double rotation
25
25
10
60
20
10
40
35
65
45
60
20
70
40
35
65
45
70
50
40
25
10
5
25
60
45
35
20
65
50
60
10
70
35
45
20
65
50
70
55
40
25
60
10
5
35
20
50
45
25
65
55
60
10
70
35
20
30
50
45
65
55
70
15
Le predecesseur de 25, 20, na quun fils. On remplace 25 par 20 et cela ne desequilibre pas larbre !
40
20
60
10
5
35
15
30
50
45
65
55
70
La suppression de 30 est sans probl`eme. Celle de 35 (feuille maintenant) desequilibre son p`ere 20. Roration
10-20.
45
45
20
10
5
60
50
15
10
65
55
5
70
60
20
15
50
65
55
70
Exercice 7 Une facon simple et rapide est de refaire larbre de zero ! En effet on peut facilement
construire un ABR equilibre depuis un tableau trie. Une premi`ere etape consiste donc `a faire un parcours
infixe de lABR de depart pour obtenir le tableau T de ses elements, trie par ordre croissant. Cela se fait
en O(n).
Ensuite nous allons faire du diviser pour regner pour construire lAVL : on ins`ere le median `a la racine
et on repart `a gauche et `a droite. Il ny aura alors jamais de reequilibrages `a faire.
` chaque appel,
Cela donne lalgorithme suivant, recursif (initialement sur un arbre reduit a` une feuille). A
soit on place une valeur dans un nud (ce qui arrive n fois) soit on ne fait rien (ce qui arrive au pire
deux fois plus que le nombre dappels recursifs) donc une complexite totale de O(n).
Notez que tous les nuds ont un equilibre de 0, sauf ceux sur le chemin allant du dernier nud insere `a
la racine qui peuvent avoir +1 ou -1 comme desequilibre.
Correction de lexercice 1.
Aucun nest un rouge noir.
Un arbre rouge noir est un arbre binaire de recherche comportant un champ suppplmentaire
par nud : sa couleur, qui peut valoir soit ROUGE, soir NOIR.
En outre, un arbre rouge noir satisfait les proprits suivantes :
1. Chaque nud est soit rouge, soit noir.
2. Chaque feuille est noire.
3. Si un nud est rouge, alors ses deux fils sont noirs.
4. Pour chaque nud de larbre, tous les chemins descendants vers des feuilles contiennent
le mme nombre de nuds noirs.
5. La racine est noire.
Le premier arbre (a) na pas sa racine noir.
Dans le deuxime (b) le chemin vers la troisime feuille contient un seul nuds noir feuille
exclue, tandis quun chemin vers la premire en contient 2 feuille exclue.
Le troisime arbre (c) est trs joli avec de belles couleurs mais ce nest pas un ABR donc
pas un rouge noir (oui je sais cest vache).
Le quatrime (d) a un nud rouge dont un fils est rouge.
Correction de lexercice 2.
Oui.
30
15
40
10
N
25
20
N
N
50
N
N
Tas
9
4
9
1
Question 3.
16
16
14
10
8
2
7
4
14
10
11
11
4
Question 4.
16
16
1
8
2
10
7
16
1
2
10
7
8
3
2
1
10
7
1
>
log(n)
1. h tant entier, h = blog(n)c.
n
Question 3. Soit B un sous-arbre dun tas et c la valeur de sa clef. Supposons quil existe un nud
dont la valeur v est strictement plus grande que c. Soit v0 = c, . . . , vp = n les valeurs des clefs des nuds
en suivant la branche reliant ces deux nuds. Par dfinition des tas, on a i {0, . . . , p 1}, vi vi+1 ,
ce qui contredit laffirmation prcdente.
1
Question 4. Si lon considre une branche entre la racine r et une feuille f , il dcoule de la dfinition
des tas et du fait que les clefs sont toutes distinctes que clef (r) > clef (f ). Donc le plus petit lment est
dans une feuille du tas.
Rciproquement, il est clair que nimporte quelle feuille peut contenir le plus petit lment du tas.
14
6
1
13
5
10
12
Question 3.
i {1, . . . , n 1}, T [i] T [b
i1
c]
2