Data structures and algorithms in Java - Drozdek, Adam (Cengage learning, 2005)