Algorithms in Java, Parts 1-4, 3 ed. - Robert Sedgewick (Addison-Wesley, 2003)