Data Structures and Algorithms in JavaScript