Data Structures And Problem Solving Using Java by Mark Allen Weiss