avl trees - bguds182/wiki.files/05-avl.pdf · avl trees. motivation in a binary search tree, all...
TRANSCRIPT
![Page 1: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/1.jpg)
AVL trees
AVL trees
![Page 2: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/2.jpg)
Dynamic set ADT
A dynamic set ADT is a structure that stores a set ofelements. Each element has a (unique) key and satellite data.The structure supports the following operations.
Search(S , k) Return the element whose key is k .
Insert(S , x) Add x to S .
Delete(S , x) Remove x from S (the operation receives apointer to x).
Minimum(S) Return the element in S with smallest key.
Maximum(S) Return the element in S with largest key.
Successor(S , x) Return the element in S with smallest keythat is larger than x .key.
Predecessor(S , x) Return the element in S with largest keythat is smaller than x .key.
AVL trees
![Page 3: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/3.jpg)
Motivation
In a binary search tree, all operation take Θ(h) time inthe worst case, where h is the height of the tree.
The optimal height of a binary search tree is blog nc.Even if we start with a balanced tree, insertion/deletionoperations can make the tree unbalanced.
An AVL tree is a special kind of a binary search tree,which is always kept banalced.
AVL trees
![Page 4: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/4.jpg)
AVL tree
An AVL tree is a binary search tree such that for every node x ,
|height(x .left)− height(x .right)| ≤ 1
(we assume that height(NULL) = −1)
4
2 6
10
168
14
12
1
00
0
2
3
1
0
AVL trees are named after their inventors, GeorgyAdelson-Velsky and Evgenii Landis.
AVL trees
![Page 5: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/5.jpg)
The height of an AVL tree
Theorem
The height of an AVL tree is Θ(log n).
Let nk be the minimum number of nodes in an AVL treewith height k .
n0 = 1.
n1 = 2.
n2 = 2 + 1 + 1 = 4.
n3 = 4 + 2 + 1 = 7.
nk = nk−1 + nk−2 + 1.
AVL trees
![Page 6: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/6.jpg)
The height of an AVL tree
Theorem
The height of an AVL tree is Θ(log n).
Let nk be the minimum number of nodes in an AVL treewith height k .
n0 = 1.
n1 = 2.
n2 = 2 + 1 + 1 = 4.
n3 = 4 + 2 + 1 = 7.
nk = nk−1 + nk−2 + 1.
AVL trees
![Page 7: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/7.jpg)
The height of an AVL tree
Theorem
The height of an AVL tree is Θ(log n).
Let nk be the minimum number of nodes in an AVL treewith height k .
n0 = 1.
n1 = 2.
n2 = 2 + 1 + 1 = 4.
n3 = 4 + 2 + 1 = 7.
nk = nk−1 + nk−2 + 1.
10
AVL trees
![Page 8: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/8.jpg)
The height of an AVL tree
Theorem
The height of an AVL tree is Θ(log n).
Let nk be the minimum number of nodes in an AVL treewith height k .
n0 = 1.
n1 = 2.
n2 = 2 + 1 + 1 = 4.
n3 = 4 + 2 + 1 = 7.
nk = nk−1 + nk−2 + 1.
21
AVL trees
![Page 9: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/9.jpg)
The height of an AVL tree
nk = Fk+3 − 1 where Fk is the k-th Fibonacci number.The proof is by induction:Base: n0 = 1 = F3 − 1, n1 = 2 = F4 − 1.
nk = nk−1+nk−2+1 = (Fk+2−1)+(Fk+1−1)+1 = Fk+3−1
It is known that
Fk =
(1+√5
2
)k
−(
1−√5
2
)k
√5
≥
(1+√5
2
)k
− 1√
5
Therefore,
nk ≥
(1+√5
2
)k+3
− 1√
5− 1 ≥
(1+√5
2
)k+3
√5
− 1.45
k ≤ log(1+√5)/2
(√5(nk + 1.45)
)− 3 ≤ 1.441 log nk .
The height of an AVL tree with n nodes is ≤ 1.441 log n.AVL trees
![Page 10: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/10.jpg)
Implementation
A node in an AVL tree has the same fields defined forbinary search tree (key, left, right, p).
Additionally, every node has a field height which storesthe height of the node.
AVL trees
![Page 11: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/11.jpg)
Searching
The Search operation is handled exactly like in regularbinary search trees.
Time complexity: Θ(h) = Θ(log n).
AVL trees
![Page 12: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/12.jpg)
Insertion/Deletion
Insertion and deletion are done by first applying theinsertion/deletion algorithm of binary search trees.
After the insertion/deletion, the tree may not bebalanced, so we need to correct it.
The time complexity of insertion/deletion in AVL tree isΘ(log n).
AVL trees
![Page 13: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/13.jpg)
Insertion
After a new leaf is inserted, the height of some of its ancestorsincrease by 1. The heights of the other nodes are unchanged.
4
2 6
10
3
168
14
12
1
00
0
0
01
12
23
34
4
2 6
10
3
158
14
12
30
0
0
01
12
23
13
17
16 19
18
4
AVL trees
![Page 14: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/14.jpg)
Insertion
The height fields of the nodes can be updated by going up thetree from the inserted leaf, and for each ancestor v of the leafperform
v .height = 1 + max(v .left.height, v .right.height)
4
2 6
10
3
168
14
12
1
00
0
0
01
12
23
34
4
2 6
10
3
158
14
12
30
0
0
01
12
23
13
17
16 19
18
4
AVL trees
![Page 15: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/15.jpg)
Insertion
Some of the ancestors of the leaf may become unbalanced.
4
2 6
10
3
168
14
12
1
00
0
0
01
12
23
34
4
2 6
10
3
158
14
12
30
0
0
01
12
23
13
17
16 19
18
4
AVL trees
![Page 16: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/16.jpg)
Let x be the lowest node on the path from the new leafto the root which is unbalanced (if x doesn’t exist we aredone).
There are 4 cases. In Case 1 suppose that the new leaf isin the subtree of x .left.left.
Let y = x .left.
Let h be the height of the right child of x .
Since x was balanced before the insertion, the height of ybefore the insertion was h − 1/h/h + 1.
x
y
A B
C h
New leaf
h-1/h/h+1
AVL trees
![Page 17: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/17.jpg)
The insertion either increases the height of a node ordoesn’t change the height. Since x is now unbalanced,the only possible case is that the height of y is h + 1before the insertion, and h + 2 afterward.
The height of x before the insertion is h + 2, and h + 3afterward.
x
y
A B
C h
New leaf
h+1h+2
AVL trees
![Page 18: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/18.jpg)
The insertion either increases the height of a node ordoesn’t change the height. Since x is now unbalanced,the only possible case is that the height of y is h + 1before the insertion, and h + 2 afterward.
The height of x before the insertion is h + 2, and h + 3afterward.
x
y
A B
C h
New leaf
h+1h+2
h+2h+3
AVL trees
![Page 19: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/19.jpg)
After the insertion, y has a child with height h + 1. Thischild must be the left child A. The height of A before theinsertion is h.
The height of the right child of y is h.
x
y
A B
C h
New leaf
h+1h+2
h+2h+3
hh+1 h
AVL trees
![Page 20: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/20.jpg)
To fix the imbalance of x , perform the following operationcalled right rotation.
The rotation operation doesn’t change the inorder of thenodes. Therefore, the new tree is a valid binary searchtree.
x
y
A B
C hh+1h+2
h+2h+3
hh+1 h
x
y
A
B C
h+1
h h
AVL trees
![Page 21: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/21.jpg)
The heights of x and y after the rotations are h + 1 andh + 2.
After the rotation, x and y are balanced.
x
y
A B
C hh+1h+2
h+2h+3
hh+1 h
x
y
A
B C
h+1
h h
h+1
h+2
AVL trees
![Page 22: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/22.jpg)
Assume x had a parent the before the rotation, anddenote it by u.
Let w be the sibling of x before the rotation.
The height of w is h + 1/h + 2/h + 3.
If the height of w is h + 1, then u is unbalanced after theinsertion (before the rotation).
u
w wh+1/h+2/h+3
h+3/h+3/h+4h+4
h+1/h+2/h+3
h+3/h+3/h+4u
x
y
A B
C hh+1h+2
h+2h+3
hh+1 h
x
y
A
B C
h+1
h h
h+1
h+2
AVL trees
![Page 23: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/23.jpg)
After the rotation, the height the sibling of w (node y) ish + 2, which is equal to the height of the sibling of wbefore the rotation. Therefore, u is balanced.
The height of u after the rotation is the same as theheight before the insertion. Repeating these arguments,every ancestor of u is balanced and has same height asbefore the insertion.
u
w wh+1/h+2/h+3
h+3/h+3/h+4h+4
h+1/h+2/h+3
h+3/h+3/h+4u
x
y
A B
C hh+1h+2
h+2h+3
hh+1 h
x
y
A
B C
h+1
h h
h+1
h+2
AVL trees
![Page 24: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/24.jpg)
Example
x
4
2 6
10
3
168
14
12
y
16
14
12
x
4
2
6 103
8
y
In this example, h = 0.
AVL trees
![Page 25: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/25.jpg)
In Case 2, suppose that the new leaf is in the subtree ofx .left.right.
Let y = x .left.
Performing a rotation on x and y does not work.
x
y
A B
C hh+1h+2
h+2h+3
hh+1h
x
y
A
B Ch+1
h
h
h+2
h+3
AVL trees
![Page 26: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/26.jpg)
Let z = y .right. Perform a double rotation on x , y , z .
The double rotation doesn’t change the inorder of thenodes.
After the double rotation, x , y , z are balanced. Moreover,the height of z is the same as the height of x before theinsertion, and therefore all ancestors of z are balanced.
A B
x
y
A z
D hh+1h+2
h+2h+3
hh+1h
x
C D
h+1
h+2
B Ch-1h h-1
y
z
h hh-1
h
h+1
AVL trees
![Page 27: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/27.jpg)
Case 3 is when the new leaf is in the subtree ofx .right.right, and Case 4 is when the new leaf is in thesubtree of x .right.left.
Case 3 and Case 4 are symmetric to Case 1 and Case 2.
Case 3 is shown below.
x
y
CB
A h h+1h+2
h+2h+3
hh+1h
x
y
C
A B
h+1
h h
h+1
h+2
AVL trees
![Page 28: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/28.jpg)
Deletion
After a node is deleted, the heights of some of itsancestors decrease by 1. The heights of the other nodesare unchanged.
A single ancestor of the deleted node can becomeunbalanced.
1 4 28
6 9
11
7 0
10
2
3
5
10
120
2
1
3
AVL trees
![Page 29: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/29.jpg)
Let x be the unbalanced node (if x doesn’t exist we aredone).
Assume that the deleted node is in the subtree of x .right.
Let y = x .left.
Since x was balanced before the deletion, the height ofx .right before the deletion was h − 1/h/h + 1.
x
y
A B
Chh-1/h/h+1
AVL trees
![Page 30: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/30.jpg)
The deletion either decreases the height of a node ordoesn’t change the height. Since x is now unbalanced,the only possible case is that the height of x .right ish − 1 before the insertion, and h − 2 afterward.
The height of x is h + 1 (the insertion doesn’t change theheight).
x
y
A B
Ch h-1h-2
AVL trees
![Page 31: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/31.jpg)
The deletion either decreases the height of a node ordoesn’t change the height. Since x is now unbalanced,the only possible case is that the height of x .right ish − 1 before the insertion, and h − 2 afterward.
The height of x is h + 1 (the insertion doesn’t change theheight).
x
y
A B
Ch h-1h-2
h+1
AVL trees
![Page 32: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/32.jpg)
Since y has height h and it is balanced, one of y ’schildren has height h − 1 and the other child has heighth − 1/h − 2.
In Case 1, assume that the height of y .left is h − 1, andthe height of y .right is h − 1/h − 2.
x
y
A B
Ch h-1h-2
h+1
h-1/h-2h-1
AVL trees
![Page 33: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/33.jpg)
In Case 1 we perform a right rotation on x and y .
After the rotation, the height of x is h/h − 1 and theheight of y is h + 1/h.
After the rotation, x and y are balanced.
x
y
A B
Ch h-1h-2
h+1
h-1/h-2h-1
x
y
A
B C
h-1
h-2
h/h-1
h+1/h
h-1/h-2
AVL trees
![Page 34: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/34.jpg)
Assume x had a parent the before the rotation, anddenote it by u.
Let w be the sibling of x before the rotation.
The height of w is h/h + 1/h + 3.
u is balanced after the insertion (before the rotation).
h+2/h+2/h+3u
wh/h+1/h+2
wh/h+1/h+2
u
x
y
A B
Ch h-1h-2
h+1
h-1/h-2h-1
x
y
A
B C
h-1
h-2
h/h-1
h+1/h
h-1/h-2
AVL trees
![Page 35: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/35.jpg)
After the rotation, u can become unbalanced. Thisoccurs when the height of w is h + 2, and the height of yafter the rotation is h.
If the height of w is h, and the height after the rotation ish, then the height of u is h + 2 and h + 1 afterwards.This can cause an imbalance in an ancestor of u.
In the two cases above, additional rotation is needed.h+2/h+2/h+3u
wh/h+1/h+2
wh/h+1/h+2
u
x
y
A B
Ch h-1h-2
h+1
h-1/h-2h-1
x
y
A
B C
h-1
h-2
h/h-1
h+1/h
h-1/h-2
AVL trees
![Page 36: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The](https://reader030.vdocuments.mx/reader030/viewer/2022040521/5e7a18644fa6217ac4240179/html5/thumbnails/36.jpg)
In Case 2, assume that the height of y .left is h − 2, andthe height of y .right is h − 1.
Let z = y .right.
In this case we perform a double rotation of x , y , z .
A B
x
y
A z
D x
C D
h-1
h-2
h
B C h-2/h-3
y
z
h-2
h-1h-1h-2h
h-2
h+1
h-1
h-2/h-3
h-2/h-3 h-2/h-3
AVL trees