Allen B. Downey Think Data Structures Algorithms and Information Retrieval in Java - USA O’Reilly 2017 ISBN: 9781491972397