Lecture 5 - Binary search tree
Lecture 5 - Binary search tree
25
BST Construction
• How to build & maintain binary trees?
• Insertion
• Deletion
• Maintain key property (invariant)
• Smaller values in left sub-tree
• Larger values in right sub-tree
Binary Search Tree – Insertion
• Algorithm
1. Perform search for value X
2. Search will end at node Y (if X not in tree)
3. If X < Y, insert new leaf X as new left sub-tree for Y
4. If X > Y, insert new leaf X as new right sub-tree for Y
• Observations
• O( log(n) ) operation for balanced tree
• Insertions may unbalance tree
Insertion Example
• Insert ( 20 ) 10 10 < 20, right
30 > 20, left
5 30
25 > 20, left
2 25 45 Insert 20 on left
20
Binary Search Tree – Deletion
• Algorithm
1. Perform search for value X
2. If X is a leaf, delete X
3. Else // must delete internal node
a) Replace with largest value Y on left sub-tree
OR smallest value Z on right sub-tree
b) Delete replacement value (Y or Z) from sub-tree
o Observation
• Deletions may unbalance tree
Example Deletion (Leaf)
• Delete ( 25 )
10 10
10 < 25, right
5 30 30 > 25, left 5 30
25 = 25, delete
2 25 45 2 45
Example Deletion (Internal Node)
• Delete ( 10 ) 10 5 5
5 30 5 30 2 30
2 25 45 2 25 45 2 25 45
3 6 7 11 32 33 53
Binary Search
• Example: sorted array of integer keys. Target=7
[0] [1] [2] [3] [4] [5] [6]
3 6 7 11 32 33 53
3 6 7 11 32 33 53
3 6 7 11 32 33 53
3 6 7 11 32 33 53
3 6 7 11 32 33 53
3 6 7 11 32 33 53
3 6 7 11 32 33 53
3 6 7 11 32 33 53
3 6 7 11 32 33 53
3 6 7 11 32 33 53
• Start at root:
11
6 33
3 7 32 53
Search for target = 7
3 7 32 53
Search for target = 7
• Find approximate midpoint of sub-array:
3 6 7 11 32 33 53
3 7 32 53
Search for target = 7
• Search right subarray: 3 6 7 11 32 33 53
3 7 32 53
Any Questions..??