Data Structures and Algorithms in Javascript