Java : software structures : designing and using data structures. - Lewis, John; Chase, Joseph (Pearson, 2005)