Binary Tree Recursion
Add up all numbers in a Cons tree:
(defun addnums (tree)
(if (consp tree) ; interior node
(+ (addnums (first tree))
(addnums (rest tree)) )
(if (numberp tree) ; leaf node
tree
0) ) )
Set of all symbols in a Cons tree:
(defun symbolset (tree)
(if (consp tree)
(union (symbolset (first tree))
(symbolset (rest tree)) )
(if (and (not (null tree))
(symbolp tree))
(list tree)
'()) ) )