Algorithms in Java - Sedgewick, Robert, 1946- (Addison-Wesley, 2003)