In preorder, the parent node is processed before its children.

Suppose that we want to print out a directory name, then the contents of the directory. We will also indent to show the depth. We assume a directory tree as shown earlier: a directory is a list of the directory name followed by its contents; a non-list is a file.

(defun printdir (dir level)
  (spaces (* 2 level))
  (if (symbolp dir)
      (progn (prin1 dir)
      (progn (prin1 (first dir))
             (dolist (contents (rest dir))
               (printdir contents
                         (+ level 1)) ) ) ) )

Contents    Page-10    Prev    Next    Page+10    Index