Think Data Structures: Algorithms and Information Retrieval in Java - Allen Downey (University of Minnesota’s College of Education and Human Development Open Textbook Library Green Tea Press)