Data Structures And Algorithm Analysis In Java by Mark A. Weiss