(define (square x) (* x x)) (define (square-tree tree) (cond ((null? tree) '()) ((not (pair? tree)) (square tree)) (else (cons (square-tree (car tree)) (square-tree (cdr tree)))))) (define (square-tree-map tree) (map (lambda (sub-tree) (if (pair? sub-tree) (square-tree-map sub-tree) (square sub-tree))) tree)) (define (tree-map fn tree) (map (lambda (sub-tree) (if (pair? sub-tree) (tree-map fn sub-tree) (fn sub-tree))) tree))