Java Datastructures and Algorithms