Algorithms in java - Sedgewick, Robert (Pearson education, 2006)