You are on page 1of 2

Red-Black Trees 4/10/2002 11:1

AVL Tree Definition


Š AVL trees are
AVL Trees
4
balanced. 44
2 3
Š An AVL Tree is a 17 78

v
6
binary search tree 1 2 1
32 50 88
3 8 such that for every
z 1 1
4 internal node v of T, 48 62
the heights of the
children of v can
differ by at most 1. An example of an AVL tree where the
heights are shown next to the nodes:

AVL Trees 1 AVL Trees 2

n(2) 3

4 n(1)

Height of an AVL Tree Insertion in an AVL Tree


Š Insertion is as in a binary search tree
Š Fact: The height of an AVL tree storing n keys is O(log n).
Š Always done by expanding an external node.
Š Proof: Let us bound n(h): the minimum number of internal
nodes of an AVL tree of height h. Š Example: 44 44

Š We easily see that n(1) = 1 and n(2) = 2 c=z


17 78 17 78
Š For n > 2, an AVL tree of height h contains the root node, a=y
one AVL subtree of height n-1 and another of height n-2.
32 50 88 32 50 88
Š That is, n(h) = 1 + n(h-1) + n(h-2)
Š Knowing n(h-1) > n(h-2), we get n(h) > 2n(h-2). So 48 62 48 62
b=x
n(h) > 2n(h-2), n(h) > 4n(h-4), n(h) > 8n(n-6), … (by induction),
n(h) > 2in(h-2i) 54
Š Solving the base case we get: n(h) > 2 h/2-1 w

Š Taking logarithms: h < 2log n(h) +2 before insertion after insertion


Š Thus the height of an AVL tree is O(log n)
AVL Trees 3 AVL Trees 4

Insertion Example, continued


Trinode Restructuring 5
44
Š let (a,b,c) be an inorder listing of x, y, z 2
z 64
17 78 7
Š perform the rotations needed to make b the topmost node of 1 3
2 y 1
the three 32 1 50 4 88
2 x
(other two cases 1
a=z case 2: double rotation 48 3 62
a=z are symmetrical) 1 5
(a right rotation about c, 54 T3
b=y
c=y then a left rotation about a) unbalanced... T2
T0 T0
T0 4
T1 44
c=x b=x 4 x
2 3
T3
T1
b=y b=x
17
2 y 62
z6
1 2 2
T1 T2
T2 T3 32
1
1 50 3 5
78 7
1 1
a=z c=x a=z c=y
...balanced 48 54 88

case 1: single rotation T2


(a left rotation about a) T0 T1 T2 T3 T0 T1 T2 T3
T0 T1 T3
AVL Trees 5 AVL Trees 6
Red-Black Trees 4/10/2002 11:1

Restructuring Restructuring
(as Single Rotations) (as Double Rotations)
Š Single Rotations: Š double rotations:

a=z single rotation b=y a=z double rotation b=x


b=y a=z c=x c=y a=z c=y
c=x b=x
T0 T3 T0 T2
T1 T3 T0 T1 T2 T2 T3 T0 T1 T3
T2 T1

c=z double rotation b=x


c=z single rotation b=y a=y a=y c=z
b=y a=x c=z b=x
a=x
T0 T2
T3 T3 T3 T2 T3 T1 T0
T0 T2 T2 T1 T0 T1
T1
AVL Trees 7 AVL Trees 8

Removal in an AVL Tree Rebalancing after a Removal


Š Removal begins as in a binary search tree, which Š Let z be the first unbalanced node encountered while travelling
means the node removed will become an empty up the tree from w. Also, let y be the child of z with the larger
height, and let x be the child of y with the larger height.
external node. Its parent, w, may cause an imbalance.
Š We perform restructure(x) to restore balance at z.
Š Example: 44 44 Š As this restructuring may upset the balance of another node
higher in the tree, we must continue checking for balance until
17 62 17 62 the root of T is reached
62
a=z 44

32 50 78 50 78 44 78
w 17 62 b=y

48 54 88 48 54 88 17 50 88
50 78 c=x

48 54
48 54 88
before deletion of 32 after deletion

AVL Trees 9 AVL Trees 10

Running Times for


AVL Trees
Š a single restructure is O(1)
„ using a linked-structure binary tree
Š find is O(log n)
„ height of tree is O(log n), no restructures needed
Š insert is O(log n)
„ initial find is O(log n)
„ Restructuring up the tree, maintaining heights is O(log n)
Š remove is O(log n)
„ initial find is O(log n)
„ Restructuring up the tree, maintaining heights is O(log n)

AVL Trees 11

You might also like