Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 1
AVL Trees
6
3 8
4
v
z
Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 2
AVL Tree Definition
AVL trees are
balanced
An AVL Tree is a
binary search tree
such that for
every internal
node v of T, the
heights of the
children of v can
differ by at most 1
88
44
17 78
32 50
48 62
2
4
1
1
2
3
1
1
An example of an AVL tree where the
heights are shown next to the nodes
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 3
Height of an AVL TreeFact: The height of an AVL tree storing n keys is O(log n).
Proof (by induction): Let us bound n(h): the minimum number of internal nodes of an AVL tree of height h.
We easily see that n(1) = 1 and n(2) = 2
For n > 2, an AVL tree of height h contains the root node, one AVL subtree of height n-1 and another of height n-2.
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). Son(h) > 2n(h-2), n(h) > 4n(h-4), n(h) > 8n(n-6), … (by induction),
n(h) > 2in(h-2i)
Solving the base case we get: n(h) > 2 h/2-1
Taking logarithms: h < 2log n(h) +2
Thus the height of an AVL tree is O(log n)
3
4 n(1)
n(2)
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 4
InsertionInsertion is as in a binary search treeAlways done by expanding an external node.Example:
44
17 78
32 50 88
48 62
54w
b=x
a=y
c=z
44
17 78
32 50 88
48 62
before insertion
after insertion
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 5
Trinode RestructuringLet (a,b,c) be the inorder listing of x, y, z
Perform the rotations needed to make b the topmost node of the three
b=y
a=z
c=x
T0
T1
T2 T3
b=y
a=z c=x
T0 T1 T2 T3
c=y
b=x
a=z
T0
T1 T2
T3b=x
c=ya=z
T0 T1 T2 T3
Double rotation around c and a
Single rotation around b
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 6
Insertion Example, continued
88
44
17 78
32 50
48 62
2
5
1
1
3
4
2
1
54
1
T0T2
T3
x
y
z
2
3
4
5
6
7
1
88
44
17
7832 50
48
622
4
1
1
2 2
3
1
54
1
T0 T1
T2
T3
x
y z
unbalanced...
...balanced
1
2
3
4
5
6
7
T1
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 7
Restructuring (as Single Rotations)Single Rotations:
T0T1
T2
T3
c = xb = y
a = z
T0 T1 T2
T3
c = x
b = y
a = zsingle rotation
T3T2
T1
T0
a = x
b = y
c = z
T0T1T2
T3
a = xb = y
c = zsingle rotation
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 8
Restructuring (as Double Rotations)double rotations:
double rotationa = z
b = x
c = y
T0T2
T1
T3 T0
T2T3T1
a = zb = x
c = y
double rotationc = z
b = xa = y
T0T2
T1
T3 T0
T2T3 T1
c = zb = x
a = y
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 9
RemovalRemoval begins as in a binary search tree, which means the node removed will become an empty external node. Its parent, w, may cause an imbalance.Example:
44
17
7832 50
8848
62
54
44
17
7850
8848
62
54
before deletion of 32 after deletion
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 10
Rebalancing after a RemovalLet z be the first unbalanced node encountered while travelling 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
We perform a trinode restructuring to restore balance at z
As this restructuring may upset the balance of another node higher in the tree, we must continue checking for balance until the root of T is reached
44
17
7850
8848
62
54
w
c=x
b=y
a=z
44
17
78
50 88
48
62
54
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 11
AVL Tree PerformanceAVL tree storing n items
The data structure uses O(n) space
A single restructuring takes O(1) time
using a linked-structure binary tree
Searching takes O(log n) time
height of tree is O(log n), no restructures needed
Insertion takes O(log n) time
initial find is O(log n)
restructuring up the tree, maintaining heights is O(log n)
Removal takes O(log n) time
initial find is O(log n)
restructuring up the tree, maintaining heights is O(log n)
© 2014 Goodrich, Tamassia, Goldwasser
Java Implementation
AVL Trees 12
© 2014 Goodrich, Tamassia, Goldwasser
Java Implementation, 2
AVL Trees 13
© 2014 Goodrich, Tamassia, Goldwasser
Java Implementation, 3
AVL Trees 14