While recursion is not always the best method for linked lists,
it usually * is* the best method for trees. We don't have a problem
with stack depth because depth is only *O(log(n))* if the tree is balanced.

Suppose that we want to add up all the numbers in a Lisp tree.

(defun addnums (tree) (if (consp tree) ; interior node (+ (addnums (first tree)) (addnums (rest tree)) ) (if (numberp tree) ; leaf node tree 0) ) )

Suppose that we want the set of symbols in a Lisp tree.

(defun symbolset (tree) (if (consp tree) (union (symbolset (first tree)) (symbolset (rest tree)) ) (if (and tree (symbolp tree)) (list tree) '()) ) )