Data Structures and Algorithms in Python By Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser