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