Java Software Structures: Designing and Using Data Structures - Lewis, John; Chase, Joseph