data structures and algorithms in depth using python