Data structures and abstractions with Java - Carrano, Frank M. (Prentice Hall, 2012)