Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne