This is a nice tree recursive solution. Read [Structure and Interpretation of Computer Programs -- 1.2.2 Tree Recursion](http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2.2), implement the iterative solution, and compare the shape and runtime of each.