http://ocw.mit.edu
For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.
Lecture 3 Ver 2.0 Scheduling and Binary Search Trees 6.006 Spring 2008
– Deﬁnition
– How to solve with lists
– Operations
Readings
CLRS Chapter 10, 12. 13
• Add t to the set of no other landings are scheduled within < 3 minutes either way.
Example
37 41 46 49 56
time (mins)
now x x x x
Let R denote the reserved landing times: R = (41, 46, 49, 56)
Request for time: 44 not allowed (46�R)
53 OK
20 not allowed (already past)
 R = n
Goal: Run this system eﬃciently in O(lg n) time
1
Lecture 3 Ver 2.0 Scheduling and Binary Search Trees 6.006 Spring 2008
Algorithm
init: R = [ ]
R.append(t)
R = sorted(R)
land: t = R[0]
Can we do better?
• Sorted list: A 3 minute check can be done in O(1). It is possible to insert new
time/plane rather than append and sort but insertion takes Θ(n) time.
• Dictionary or Python Set: Insertion is O(1) time. 3 minute check takes Ω(n) time
New Requirement
Rank(t): How many planes are scheduled to land at times ≤ t? The new requirement
necessitates a design amendment.
Lecture 3 Ver 2.0 Scheduling and Binary Search Trees 6.006 Spring 2008
BST NIL
insert 49 BST 49 root
all elements > 49
insert 79 BST 49
off to the right,
79 in right subtree
49 all elements < 49,
insert 46 BST go into left subtree
79
46
49
insert 41 79
BST 46
insert 64
64
41
49
49
79
41 79
46
46
Lecture 3 Ver 2.0 Scheduling and Binary Search Trees 6.006 Spring 2008
nextlarger(x)
else y = parent(x)
x = y; y = parent(y)
return(y);
49
41 79
46
Figure 4: nextlarger(x)
Cannot solve it eﬃciently with what we have but can augment the BST structure.
6
what lands before 79?
49
2 3
46 79 keep track of size of subtrees,
1 1 1 during insert and delete
43 64 83
4
Lecture 3 Ver 2.0 Scheduling and Binary Search Trees 6.006 Spring 2008
subtree
49 46
1 + 2 + 1 + 1 = 5
79 64
subtree
All the Python code for the Binary Search Trees discussed here are available at this link
43
46
49
55
The tree in Fig. 7 looks like a linked list. We have achieved O(n) not O(log(n)!!
. .
