Data Structures and Algorithms in Python by Michael T. Goodrich & Roberto Tamassia