previous | index | next

A More Efficient preorder

Use a second argument on which to cons nodes as you encounter them:
     (define preorder
       (lambda (tree)
         (preorder-onto tree '())))
     
     (define preorder-onto
       (lambda (tree list)
         (if (empty-tree? tree)
             list
             (cons (root tree) 
                   (preorder-onto 
                    (left-subtree tree)
                    (preorder-onto (right-subtree tree) list))))))

previous | index | next