princeton Algorithms, Part I by Kevin Wayne, Robert Sedgewick