Data Structures and Abstractions with Java (3rd Edition)