Think Data Structures by Allen B. Downey