Data Structures and Algorithms in Java (2nd Edition)