Professional Documents
Culture Documents
CSE, POSTECH
Balanced Binary Search Trees
If the height of a binary tree is always O(log n), we
can guarantee O(log n) performance for each
search tree operation
Trees with a worst-case height of O(log n) are
called balanced trees
An example of a balanced tree is AVL (Adelson-
Velsky and Landis) tree
AVL Tree
Definition
Binary tree.
If T is a nonempty binary tree with TL and TR as
its left and right subtrees, then T is an AVL tree iff
1. TL and TR are AVL trees, and
2. |hL – hR| 1 where hL and hR are the heights of TL and
TR, respectively
AVL Search Trees
An AVL search tree is a binary search tree that is
also an AVL tree
Which trees in Figure 14.1 are AVL trees?
– (a) and (b)
Which trees in Figure 14.1 are AVL search trees?
– (b) only
Which trees in Figure 14.3 are AVL search trees?
– (a) and (b)
Indexed AVL Search Trees
An indexed AVL search tree is an indexed binary
search tree that is also an AVL tree
Which trees in Figure 14.2 are indexed AVL trees?
– (a) and (b)
Which trees in Figure 14.2 are indexed AVL
search trees?
– (a) and (b)
Properties of AVL Tree
1. The height of an AVL tree with n nodes is O(log n)
2. For every value of n, n 0, there exists an AVL tree
3. An n-node AVL search tree can be searched in O(height) =
O(log n) time
4. A new node can be inserted into an n-node AVL search
tree so that the result is an n+1 node AVL tree and
insertion can be done in O(log n) time
5. A node can be deleted from an n-node AVL search tree,
n>0, so that the result is an n-1 node AVL tree and deletion
can be done in O(log n) time
Balance Factor
AVL trees are normally represented using the linked
representation
To facilitate insertion and deletion, a balance factor (bf)
is associated with each node
The balance factor bf(x) of a node x is defined as
height(xleftChild) – height(xrightChild)
Balance factor of each node in an AVL tree must be –1,
0, or 1
See Figure 15.1 for examples
AVL Tree with Balance Factors
-1 10
1 7 1 40
0 3 0 8 1 30 45 -1
0 0 5 0
1 -1 20 0 35 60
0
25
• Is this an AVL tree?
• What is the balance factor for each node in this AVL tree?
• Is this an AVL search tree?
Searching an AVL Search Trees
To search an AVL search tree, we can use
Program 14.4 (i.e., the code for searching a binary
search tree) without any change
What would be the search time complexity?
– O(log n)
Inserting into an AVL Search Trees
If we use the strategy of Program 14.5 to insert an element
into an AVL search tree, the result may not be an AVL tree
That is, the tree may become unbalanced
If the tree becomes unbalanced, we must adjust the tree to
restore balance - this adjustment is called rotation
See the example in Figure 15.2
Read the observations about the unbalanced tree that
results from an insertion on pages 568-569
Inserting into an AVL Search Tree
Insert(9) -1 10
1 7 1 40
0 3 0 8 1 30 45 -1
0 0 5 0
1 0 9 -1 20 0 35 60
0
25
• Where is 9 going to be inserted into?
• After the insertion, is the tree still an AVL search tree?
(i.e., still balanced?)
Imbalance Types
After an insertion, when the balance factor of node A is –2 or
2, the node A is one of the following four imbalance types
1. LL: new node is in the left subtree of the left subtree of A
2. LR: new node is in the right subtree of the left subtree of A
3. RR: new node is in the right subtree of the right subtree of A
4. RL: new node is in the left subtree of the right subtree of A
Rotation
Definition
To switch children and parents among two or three
adjacent nodes to restore balance of a tree.
A rotation may change the depth of some nodes,
but does not change their relative ordering.
Left Rotation
Definition
In a binary search tree, pushing a node A down and to the
left to balance the tree.
A's right child replaces A, and the right child's left child
becomes A's right child.
9 A 15
Left Rotation
4 15 9 22
12 22 4 12
4 12 12 22
AVL Rotations
To balance an unbalanced AVL tree (after an insertion), we
may need to perform one of the following rotations: LL, RR,
LR, RL
0 3 0 8 1 30 45 -1
0 0 5 0
1 -1 20 0 35 60
0
• Where is 29 going to be inserted into? 25
- use the AVL-search-tree-insertion algorithm
in Figure 15.6) 29
• After the insertion, is the tree still an AVL
search tree? (i.e., still balanced?)
Inserting into an AVL Search Tree
-1 10
1 7 1 40
0 3 0 8 1 30 45 -1
0 0 5 0
1 20 0 35 60
-2
• What are the new balance factors for 20,
25, 29? 25 -1
• What type of imbalance do we have?
• RR imbalance new node is in the right 29 0
subtree of right subtree of node 20 (node
with bf = -2) what rotation do we need?
• What would the left subtree of 30 look
like after RR rotation?
After RR Rotation
-1 10
1 7 1 40
0 3 0 8 1 30 45 -1
0 1 0 5 0
0 25 0 35 60
0 0
20 29
• Do Exercise 15.1
- see the solution on the Web http://www.cise.ufl.edu/~sahni/dsaac/
Deletion from an AVL Search Tree
To delete an element from an AVL search tree, we can use
Program 14.6
Deletion of a node may also produce an imbalance
Imbalance incurred by deletion is classified into
the types R0, R1, R-1, L0, L1, and L-1
Rotation is also needed for rebalancing
Read the observations after deleting a node from an AVL
search tree
Read Section 15.1.6 for deletion from an AVL search tree
An R0 Rotation