Data Structures and Algorithms in Java™
Michael T. Goodrich, Roberto Tamassia & Michael H. Goldwasser