Reorganize for clearer structure: separate Algorithm & Data structure

Added some new recursion