Data Structures And Algorithm Analysis In Java by Mark Allen Weiss & Mark Weiss