The great tree-list recursion problem
http://cslibrary.stanford.edu/109/TreeListRecursion.html