Computer Science: An Interdisciplinary Approach - Robert Sedgewick, Kevin Wayne