Italyatchristmas 101214094614-phpapp01-101218223454-phpapp01 (1)
Avltrees 121106175039-phpapp01
-
Upload
queenmarry -
Category
Education
-
view
103 -
download
0
description
Transcript of Avltrees 121106175039-phpapp01
AVL Trees 1
AVL Trees6
3 8
4
v
z
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:
AVL Trees:
AVL trees were invented in 1962 by two Russian scientist G.M Adelson Velsky & E.M Landis. Definition:
An AVL tree is a binary search tree in which the balance factor of every node, which is defined as the difference b/w the heights of the node’s left & right sub
trees is either 0 or +1 or -1 . Balance factor = ht of left sub tree – ht of right sub tree.ht=height
Example :
AVL tree BST ( not AVL tree ) 1 2
0 1 0 0 1 -1 0 1 -1
0 0 0 0
10
5 20
2
4 7
10
5 20
2
4
8
12
7
8
If an insertion of a new node makes an AVL tree unbalanced , we transform the tree by a rotation
Rotation : A Rotation in an AVL tree is a local
transformation of its sub tree rooted at a node whose balance has become either +2 or -2 ,if there are several such nodes, we rotate the tree rooted at the unbalanced node that is the closest to the newly inserted leaf.
Types of rotations :
Totally there are four types of rotations
1. Single right rotation or R-rotation
2. Single left rotation or L-rotation
3. Double right-left rotation or RL-rotation
4. Double left-right rotation or LR-rotation
Points to remember to select different rotation technique :
1.Straight line with positive unbalanced.apply Right rotation for unbalanced node.
+2 0
+1 0 0
0
5
2
452
4
2.Straight line with negative unbalanced.apply left rotation for unbalanced node.
-2 0
-1 0 0
0
5
7
675
6
3.Curved line with positive unbalanced.apply left-right rotation.
Right rotation for unbalanced node and left rotation for the nearest node.
+2 0
-1 0
0 0
5
2
4
52
4
4.Curved line with negative unbalanced.apply right-left rotation.
Left rotation for unbalanced node and right rotation for the nearest node.
-2 0
+1 0 0 0
5
7
8
85
7
AVL Trees 11
Height of an AVL TreeFact: The height of an AVL tree storing n keys is O(log n).Proof: 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) = 2For 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) +2Thus the height of an AVL tree is O(log n)
3
4 n(1)
n(2)
AVL Trees 12
Insertion in an AVL TreeInsertion 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
AVL Trees 13
Trinode Restructuringlet (a,b,c) be an inorder listing of x, y, zperform 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
case 1: single rotation(a left rotation about a)
case 2: double rotation(a right rotation about c, then a left rotation about a)
(other two cases are symmetrical)
AVL Trees 14
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
67
1
88
44
17
7832 50
48
622
4
1
1
2 2
3
154
1
T0 T1
T2
T3
x
y z
unbalanced...
...balanced
1
2
3
4
5
6
7
T1
AVL Trees 15
Restructuring (as Single Rotations)
Single Rotations:
T0T1
T2
T3
c = xb = y
a = z
T0 T1 T2
T3
c = xb = y
a = zsingle rotation
T3T2
T1
T0
a = xb = y
c = z
T0T1T2
T3
a = xb = y
c = zsingle rotation
AVL Trees 16
Restructuring (as Double Rotations)
double rotations:
double rotationa = z
b = xc = 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
AVL Trees 17
Removal in an AVL TreeRemoval 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
AVL Trees 18
Rebalancing after a Removal
Let 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 restructure(x) 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
AVL Trees 19
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)