Vous êtes sur la page 1sur 14

Insertion dans un tas. Exemple.

Voici un tas (arbre binaire) et sa représentation sous forme de tableau (


on suppose que le tableau peut accueillir 15 éléments au maximum).
niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 12 18 31

8 9
niv. 4
32 28

1 2 3 4 5 6 7 8 9 10 … 15

T .Les_Elements 5 9 15 21 12 18 31 32 28 …

.Cardinal 9
On veut insérer l’élément 30

niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 12 18 31

8 9
niv. 4
32 28

1 2 3 4 5 6 7 8 9 10 … 15

T .Les_Elements 5 9 15 21 12 18 31 32 28 …

.Cardinal 9
On commence par placer 30 après tous les autres, c-à-d
en position 9+1 = 10. Le tas comporte maintenant 10 éléments.
niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 12 18 31

8 9 10
niv. 4
32 28 30

1 2 3 4 5 6 7 8 9 10 11 … 15

T .Les_Elements 5 9 15 21 12 18 31 32 28 30 …

.Cardinal 10
Move_Up(10, T)
On vérifie que ce placement respecte l’ordre des éléments dans un
tas : le nœud père (de position 5) vérifie bien la relation 12<30.
niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 12 18 31

8 9 10
niv. 4
32 28 30

1 2 3 4 5 6 7 8 9 10 11 … 15

T .Les_Elements 5 9 15 21 12 18 31 32 28 30 …

.Cardinal 10
La structure de tas est conservée, ce placement est correct.

niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 12 18 31

8 9 10
niv. 4
32 28 30

1 2 3 4 5 6 7 8 9 10 11 … 15

T .Les_Elements 5 9 15 21 12 18 31 32 28 30 …

.Cardinal 10
Insertion dans un tas. 2ème exemple.

On veut insérer l’élément 4

niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 12 18 31

8 9 10
niv. 4
32 28 30

1 2 3 4 5 6 7 8 9 10 11 … 15

T .Les_Elements 5 9 15 21 12 18 31 32 28 30 …

.Cardinal 10
Insertion dans un tas. 2ème exemple.
On commence par placer 4 après tous les autres, c-à-d
en position 10+1 = 11. Le tas comporte maintenant 11 éléments.
niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 12 18 31

8 9 10 11
niv. 4
32 28 30 4

1 2 3 4 5 6 7 8 9 10 11 12 … 15

T .Les_Elements 5 9 15 21 12 18 31 32 28 30 4 …

.Cardinal 11
Move_Up(11, T)

Ce placement ne respecte pas l’ordre des éléments dans un tas :


le nœud père (de position 5) ne vérifie pas 12<4 …
niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 12 18 31

8 9 10 11
niv. 4
32 28 30 4

1 2 3 4 5 6 7 8 9 10 11 12 … 15

T .Les_Elements 5 9 15 21 12 18 31 32 28 30 4 …

.Cardinal 11
Move_Up(11, T)

Donc on permute les 2 éléments.

niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 4 18 31

8 9 10 11
niv. 4
32 28 30 12

1 2 3 4 5 6 7 8 9 10 11 12 … 15

T .Les_Elements 5 9 15 21 4 18 31 32 28 30 12 …

.Cardinal 11
On compare maintenant les positions 2 et 5 : 9 < 4 ?
La relation n’est pas vérifiée.
niv. 1 1
5

niv. 2
2 3
9 15

niv. 3
4 5 6 7
21 4 18 31

8 9 10 11
niv. 4
32 28 30 12

1 2 3 4 5 6 7 8 9 10 11 12 … 15

T .Les_Elements 5 9 15 21 4 18 31 32 28 30 12 …

.Cardinal 11
Donc on permute les 2 éléments.

niv. 1 1
5

niv. 2
2 3
4 15

niv. 3
4 5 6 7
21 9 18 31

8 9 10 11
niv. 4
32 28 30 12

1 2 3 4 5 6 7 8 9 10 11 12 … 15

T .Les_Elements 5 4 15 21 9 18 31 32 28 30 12 …

.Cardinal 11
On compare maintenant les positions 1 et 2: 5 < 4 ?
La relation n’est pas vérifiée.
niv. 1 1
5

niv. 2
2 3
4 15

niv. 3
4 5 6 7
21 9 18 31

8 9 10 11
niv. 4
32 28 30 12

1 2 3 4 5 6 7 8 9 10 11 12 … 15

T .Les_Elements 5 4 15 21 9 18 31 32 28 30 12 …

.Cardinal 11
Donc on permute les 2 éléments.

niv. 1 1
4

niv. 2
2 3
5 15

niv. 3
4 5 6 7
21 9 18 31

8 9 10 11
niv. 4
32 28 30 12

1 2 3 4 5 6 7 8 9 10 11 12 … 15

T .Les_Elements 4 5 15 21 9 18 31 32 28 30 12 …

.Cardinal 11
STOP

La racine ne possède pas de parent avec lequel comparer.


4 ne remontera pas plus haut.
niv. 1 1
4

niv. 2
2 3
5 15

niv. 3
4 5 6 7
21 9 18 31

8 9 10 11
niv. 4
32 28 30 12

1 2 3 4 5 6 7 8 9 10 11 12 … 15

T .Les_Elements 4 5 15 21 9 18 31 32 28 30 12 …

.Cardinal 11

Vous aimerez peut-être aussi