Algorithms and data structures design, correctness, analysis - Kingston (International computer science series, 1998)