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