Reference: Bradford Tuckfield,
Dive Into Algorithms