![Page 1: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/1.jpg)
Technische Universitat Munchen
Fundamental AlgorithmsChapter 8: AVL Trees
Dirk Pfluger
Winter 2010/11
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 1
![Page 2: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/2.jpg)
Technische Universitat Munchen
Part I
AVL Trees
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 2
![Page 3: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/3.jpg)
Technische Universitat Munchen
Binary Search Trees – Summary
Complexity of Searching:• worst-case complexity depends on height of the search trees• O(log n) for balanced trees
Inserting and Deleting:• insertion and deletion might change balance of trees• question: how expensive is re-balancing?
Test: Inserting/Deleting into a (fully) balanced tree⇒ strict balancing (uniform depth for all leaves) too strict
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 3
![Page 4: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/4.jpg)
Technische Universitat Munchen
Height Balance
Definition (height balance)
Let h(x) be the height of a binary tree x .Then, the height balance b(x.key) of a node x.key is defined as
b(x.key) := h(x.rightChild)− h(x.leftChild)
i.e. the difference of the heights of the two subtrees of x.key.
Example:
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 4
![Page 5: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/5.jpg)
Technische Universitat Munchen
AVL Trees
Definition (AVL tree)
A binary search tree x is called an AVL tree, if:1. b(x.key) ∈ {−1,0,1}, and2. x.leftChild and x.rightChild are both AVL trees.
= the height balance of every node must be -1, 0, or 1
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 5
![Page 6: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/6.jpg)
Technische Universitat Munchen
Number of Nodes in an AVL Tree
Crucial Question for Complexity:What is the maximal and minimal number of nodes that can be storedin an AVL tree of given height h?
Maximal number:• a full binary tree has a height balance of 0 for every node• thus: full binary trees are AVL trees• number of nodes: 2h − 1 nodes.
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 6
![Page 7: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/7.jpg)
Technische Universitat Munchen
Minimal Number of Nodes in an AVL Tree
Minimal number:A“minimal” AVL tree of height h consists of
• a root node• one subtree that is a minimal AVL tree of height h − 1• one subtree that is a minimal AVL tree of height h − 2
⇒ leads to recurrence:
NminAVL(h) = 1 + NminAVL(h − 1) + NminAVL(h − 2)
In addition, we know that• a minimal AVL tree of height 1 has 1 node: NminAVL(1) = 1• a minimal AVL tree of height 2 has 2 nodes: NminAVL(2) = 2
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 7
![Page 8: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/8.jpg)
Technische Universitat Munchen
Minimal Number of Nodes in an AVL Tree (2)
Solve recurrence:
NminAVL(h) = 1 + NminAVL(h − 1) + NminAVL(h − 2)
NminAVL(1) = 1NminAVL(2) = 2
Compare with Fibonacci numbers: fn = fn−1 + fn−2, f0 = f1 = 1
h 1 2 3 4 5 6 7 8fh 1 2 3 5 8 13 21 34
NminAVL(h) 1 2 4 7 12 20 33 54
Claim: NminAVL(h) = fh+1 − 1 (proof by induction)
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 8
![Page 9: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/9.jpg)
Technische Universitat Munchen
Minimal Number of Nodes in an AVL Tree (2)
Minimum number of nodes: NminAVL(h) = fh+1 − 1• inequality for Fibonacci numbers: 2bn/2c ≤ fn ≤ 2n
⇒ 2b(h+1)/2c − 1 ≤ NminAVL(h) ≤ 2h+1 − 1
• thus: an AVL tree that contains n nodes will be of height Θ(log n)
Corollaries:• Searching in an AVL tree has a time complexity of Θ(log n)
• Inserting, or deleting a single element in an AVL tree has a timecomplexity of Θ(log n)
• BUT: standard inserting/deleting will probably destroy the AVLproperty.
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 9
![Page 10: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/10.jpg)
Technische Universitat Munchen
Part II
Algorithms on AVL Trees
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 10
![Page 11: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/11.jpg)
Technische Universitat Munchen
Inserting and Deleting on AVL Trees
General Concept:• insert/delete via standard algorithms• after insert/delete: load balance b(node) might be changed to
+2 or −2 for certain nodes• re-balance load after each step
Requirements:• re-balancing must have O(log n) worst-case complexity
Solution:• apply certain “rotation” operations
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 11
![Page 12: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/12.jpg)
Technische Universitat Munchen
Left Rotation
Situation:• height balance of the node is +2 (or larger), and• height balance of the right subtree is 0, or +1
• can reduce height of the subtree and require further rotations
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 12
![Page 13: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/13.jpg)
Technische Universitat Munchen
Left Rotation – Implementation
LeftRotAVL ( x : BinTree ) {
x := ( x . r i g h t C h i l d . key ,( x . key , x . l e f t C h i l d , x . r i g h t C h i l d . l e f t C h i l d ) ,x . r i g h t C h i l d . r i g h t C h i l d
) ;
}
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 13
![Page 14: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/14.jpg)
Technische Universitat Munchen
Right Rotation
Situation:• height balance of the node is -2 (or smaller), and• height balance of the left subtree is 0, or -1
• can reduce height of the subtree and require further rotations
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 14
![Page 15: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/15.jpg)
Technische Universitat Munchen
Right Rotation – Implementation
RightRotAVL ( x : BinTree ) {
x := ( x . l e f t C h i l d . key ,x . l e f t C h i l d . l e f t C h i l d ,( x . key , x . l e f t C h i l d . r i g h t C h i l d , x . r i g h t C h i l d )
) ;
}
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 15
![Page 16: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/16.jpg)
Technische Universitat Munchen
Right-Left Rotation
Situation:• height balance of the node is +2 , and• height balance of the right subtree is -1⇒ left rotation successful?
• left rotation is not sufficient to restore the AVL property
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 16
![Page 17: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/17.jpg)
Technische Universitat Munchen
Solution: Two Successive Rotations
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 17
![Page 18: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/18.jpg)
Technische Universitat Munchen
Right-Left Rotation – Implementation
RightRotLef tRot ( x : BinTree ) {RightRotAVL ( x . r i g h t C h i l d ) ;LeftRotAVL ( x ) ;
}
In a single procedure:
RightLeftRotAVL ( x : BinTree ) {x := ( x . r i g h t C h i l d . l e f t C h i l d . key ,
( x . key ,x . l e f t C h i l d ,x . r i g h t C h i l d . l e f t C h i l d . l e f t C h i l d ) ,
( x . r i g h t C h i l d . key ,x . r i g h t C h i l d . l e f t C h i l d . r i g h t C h i l d ,x . r i g h t C h i l d . r i g h t C h i l d )
) ;}
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 18
![Page 19: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/19.jpg)
Technische Universitat Munchen
Left-Right Rotation
Situation:• height balance of the node is -2 , and• height balance of the right subtree is +1
Analogous to Right-Left Rotation:• again, right rotation is not sufficient to restore the AVL property• right rotation followed by a left rotation
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 19
![Page 20: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/20.jpg)
Technische Universitat Munchen
Left-Right Rotation – Scheme
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 20
![Page 21: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/21.jpg)
Technische Universitat Munchen
Left-Right Rotation – Implementation
Lef tRotRightRot ( x : BinTree ) {LeftRotAVL ( x . l e f t C h i l d ) ;RightRotAVL ( x ) ;
}
In a single procedure:
LeftRightRotAVL ( x : BinTree ) {x := ( x . l e f t C h i l d . r i g h t C h i l d . key ,
( x . l e f t C h i l d . key ,x . l e f t C h i l d . l e f t C h i l d ,x . l e f t C h i l d . r i g h t C h i l d . l e f t C h i l d ) ,
( x . key ,x . l e f t C h i l d . r i g h t C h i l d . r i g h t C h i l d ,x . r i g h t C h i l d )
) ;}
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 21
![Page 22: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/22.jpg)
Technische Universitat Munchen
Effect of Rotation Operations
Observations:• LeftRightRot and RightLeftRot always reduce the height of the
(sub-)tree by 1.• LeftRotAVL and RightRotAVL reduce the height by at most 1
(might keep it unchanged)• thus: AVL property can be violated in a parent node!
After inserting one node into an AVL tree:• at most one rotation required to restore AVL property
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 22
![Page 23: Fundamental Algorithms - Chapter 8: AVL Trees](https://reader031.vdocuments.site/reader031/viewer/2022012502/617bd0ff8d8899572271c90d/html5/thumbnails/23.jpg)
Technische Universitat Munchen
Effect of Rotation Operations (2)
After inserting one node into an AVL tree:• at most one rotation required to restore AVL property
After deleting one node of an AVL tree:• up to log h rotations can be required to restore AVL property
For insertion and deletion:• imbalance might occur on a much higher level• thus: AVL property has to checked in the entire branch of the tree
(up to the root)
Corollary:Time complexity for deleting, inserting, and searching in an AVLtree is O(log n)
D. Pfluger: Fundamental Algorithms
Chapter 8: AVL Trees, Winter 2010/11 23