Algorithms and Data Structures based on http://interactivepython.org/courselib/static/pythonds/index.html