Gianlorenzo D'Angelo
gianlorenzo.dangelo@virgilio.it
Patrizio Bassi
patrizio.bassi@tin.it
Albe ri AVL
34
+1
21
63
0
16
30
43
72
-1
6
3
18
28
29
32
37
52
57
78
Albe ri AVL?
si
si
si
no
no
no
Alte z z a di AVL
2.
3.
Es e m pio
34
+1
21
16
6
3
63
30
18
28 32
43
37
29
72
52
-1
78
34
57
21
16
In s er ia m o 8 2
6
3
18
63
30
28 32
29
43
37
0
72
-2
52
78
57
82
-1
Ro taz io ni in AVL
Casi possibili
Ro taz io ni
(1 )
Ro taz io ni
(2 )
10
+ 2 10
+ 1 10
Inserimento di 5
+1 6
Rotazione SS
0 6
0 6
0
Bilanciato
0 5
Bilanciato
Sbilanciato
+ 2 10
+ 1 10
Inserimento di 7
-1 6
0 10
0 7
Rotazione SD
0 6
0 10
0 6
0 7
Bilanciato
Sbilanciato
Bilanciato
Ro taz io ne s e m plice SS
+ 1A
+2A
0 B
+ 1B
0 A
h
h
0 B
h
h+ 1
h+ 1
Ro taz io ne do ppia SD
(1 )
x = nodo inserito
A = nodo critico
C = left(A) antenato di x
Rotazione SD
Rotazione a sinistra su C
Rotazione a destra su A
Ro taz io ne do ppia SD
C<x<B
+ 1A
0 C
0 B
h- 1
(2 )
+2A
sottoalbero
sinistro di B - 1 C
h- 1
+1B
h- 1
A +2
+2
0 C
0 B
h- 1
-1A
0 C
h- 1
3.
4.
5.
6.
(1 )
(2 )
y->getFdb() == +1
1.Si inserisce a destra.
2.Si inserisce a sinistra-sinistra.
3.Si inserisce a sinistra-destra.
h
h
0 B
h+ 1
(3 )
(4 )
+2y
+1y
+ 1B
0 B
0 y
h
h
0 B
h+ 1
h+ 1
(5 )
+1y
0 C
0 B
h- 1
-1C
h- 1
+1B
h- 1
y +2
+2
0 C
0 B
h- 1
-1 y
0 C
h- 1
Es e m pio
34
21
16
6
63
30
43
28 32
18
37
72
52
29
+1
-1
Inseriamo k = 2
78
34
57
21
63
34
21
16
3
2
18
6
16
63
30
28 32
29
43
37
72
52
57
SS
+2
78
3
2
30
18
+1
28 32
43
37
29
72
52
57
x= 6
78
Costo totale:
O(log n)
Costo
Costo
Costo
Costo
1 inserimento c
2 inserimento 2c
i inserimento c*i
n
totale i =1
ci =cn n1/2=O n
3.
(1 )
(2 )
(3 )
B -1
0 A
C 0
C 0
C 0
A -2
A -2
C 0
B +1
B +1
C -1
0 A
C 0
C 0
B 0
B0
(4 )
8
3
13
5
248
11
6
9
7
Cosa succede se
cancelliamo la chiave 2?
16
12
19
15
18
14
10
20
17
8
8
5
6
3
1
11
7
9
10
12
13
13
19
15
14
18
DS
20
11
16
248
6
7
17
10
12
16
19
15
14
18
17
20
Co s to cance llaz io ne
2.
3.
Valori casuali
Valori decrescenti
Anim az io ne
URL: