Recursive Tree Walk

left top

(define (tree.valid? node-or-leaf)
  (if (is-node? node-or-leaf)
      (let ((smaller
              (node.on-or-in node-or-leaf))
            (not-smaller
              (node.outside node-or-leaf))
            (my-distance
              (node.distance node-or-leaf)))
        (and (< (distance smaller) 
                my-distance)
             (>= (distance not-smaller)
                 my-distance)
             (tree.valid? smaller)
             (tree.valid? not-smaller)))
        #T))

Jim Miller W3C