Binary Tree Recursion
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 numbers in a Cons tree.
public static int addnums(Object tree) { if ( consp(tree) ) ; is this a Cons? return addnums(first((Cons)tree)) + addnums(rest((Cons)tree)); else if ( numberp(tree) ) return (int) (Integer) tree; else return 0; }
(defun addnums (tree) (if (consp tree) ; interior node (+ (addnums (first tree)) (addnums (rest tree)) ) (if (numberp tree) ; leaf node tree 0) ) )