Data Structures and Problem Solving Using Java by Mark Weiss