Hafta.
Hafta.
Special Trees
1
CONTENT OF THIS WEEK
2
AVL TREES
3
MOTIVATION FOR AVL TREES
4
DEFINITION
Balance condition:
for each node in the BST, the height of left
and right sub-trees can differ by at most 1, or
hN L hN R 1.
5
REMARKS ON BALANCE CONDITION
6
STRUCTURE OF AN AVL TREE
struct BTNodeType {
infoType *data;
unsigned int height;
struct BTNodeType *left;
struct BTNodeType *right;
}
7
ROTATIONS
Definition:
Rotation is the operation performed on
a BST to restore its AVL property lost
as a result of an insert operation.
8
ROTATION
Violation of AVL condition
The AVL condition violation may occur in four cases:
Insertion into left subtree of the left child (L/L)
Insertion into right subtree of the left child (R/L)
Insertion into left subtree of the right child (L/R)
Insertion into right subtree of the right child (R/R)
The outside cases 1 and 4 (i.e., L/L and R/R) are fixed by a single
rotation.
The other cases (i.e., R/L and L/R) need two rotations called
double rotation to get fixed.
These are fundamental operations in balanced-tree algorithms.
Animation
https://yongdanielliang.github.io/animation/web/AVLTree.html
9
CONSTRUCTING AN AVL TREE – ANIMATION
48
48
10
CONSTRUCTING AN AVL TREE – ANIMATION
48 16
48
16
11
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24
48
16
24
12
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24
48
1
-1
16 R/L
Dbl. Rot.
24
13
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20
24
16 48
20
14
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8
24
16 48
8 20
15
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12
24
16 48
8 20
12
16
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12
24
L/L 2
Sngl. Rot. 0
16 48
1 0
OK
8 20
-1 0
OK
12
17
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32
16
8 24
12 20 48
32
18
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32 54
16
8 24
12 20 48
32 54
19
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32 54 72
16
8 24
12 20 48
32 54
72
20
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32 54 72
16
8 24
0 2 R/R
Sngl. Rot.
12 20 48
0 1
OK
32 54
-1 0
OK
72
21
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32 54 72 18
16
8 48
12 24 54
20 32 72
18
22
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32 54 72 18
16
1 3
8 48
L/R 2 1
Dbl.Rot. 24 OK
12 54
1 0
OK
20 32 72
0 -1
OK
18
23
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32 54 72 18 96
24
16 48
8 20 32 54
12 18 72
96
24
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32 54 72 18 96
24
16 48
8 20 32 54
-1 1
12 18 72
R/R -1 0
Sngl. OK
Rot. 96
25
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32 54 72 18 96
24
16 48
8 20 32 54
-1 1
12 18 72
R/R -1 0
Sngl. OK
Rot. 96
26
CONSTRUCTING AN AVL TREE – ANIMATION
48 16 24 20 8 12 32 54 72 18 96 64 17 60 98 68 84 36 30
24
16 48
8 20 32 72
12 18 54 96
27
EXERCISE
28
EXERCISE
29
SPLAY TREES
30
MOTIVATION FOR SPLAY TREES
31
SPLAYING
32
SPLAYING
33
ZIG-ZAG CASE
G X
P D P Height 1 G
A X A B Height 2 C D
Height 3
B C
34
ZIG-ZIG CASE
LC(P): left child of node P
RC(P): right child of node P
G Height 1 X
P D A Height 2 P
as is
X Height 3 B G
C
LC(G)
A B Height 4 C D
as is LC(P)
35
ANIMATED EXAMPLE
10
2 11
1 4
3 9
5
Initial BST
8
36
ANIMATED EXAMPLE
10
2 11
G 8
Zig-zig P 7
case
X 6
37
ANIMATED EXAMPLE
10
2 11
P 5 Zig-zag
case
X 6
38
ANIMATED EXAMPLE
10
2 G Zig-zig 11
case
1 4 P Node with 6 accessed!
3 6 X
5 9
39
ANIMATED EXAMPLE
R
10
X
6 11
4 9
2 5 7
1 3 8
40
ANIMATED EXAMPLE
4 10
2 5 9 11
1 3 7
41
ANIMATED EXAMPLE
4 10
2 5 9 11
1 3 7
42
ANIMATED EXAMPLE
4 10
2 5 9 11
1 3 7
43
EXERCISE
44
RECOMMENDATION
45