Consider the binary trees x and y below.

In Lisp, x is written as the list '(A B) or, equivalently, as
'(A B . NIL).  Similarly, y may be written '(C D E).  Suppose we
wish to replace the right-most tip of x by the entire tree y.  This
is denoted (app x y), where app stands for ``append''.

We can define app with:
(defun app (x y)                           ; Concatenate x and y.
  (declare (type (satisfies true-listp) x)); We expect x to end in NIL.
  (cond ((endp x) y)                       ; If x is empty, return y.
        (t (cons (car x)                   ; Else, copy first node
                 (app (cdr x) y)))))       ;  and recur into next.
If you defined this function in some Common Lisp, then to run app on the
x and y above you could then type
(app '(A B) '(C D E))and Common Lisp will print the result
(A B C D E). 
 