Skip to content

Instantly share code, notes, and snippets.

@ijp
Created January 4, 2012 15:41
Show Gist options
  • Save ijp/1560609 to your computer and use it in GitHub Desktop.
Save ijp/1560609 to your computer and use it in GitHub Desktop.
;; general tree fold
(define (traverse traverser nil tree)
(define (left nil)
(traverse traverser nil (node-left tree)))
(define (right nil)
(traverse traverser nil (node-right tree)))
(if (empty? tree)
nil
(traverser (node-key tree)
(node-key value)
left
right
nil)))
(define (l-to-r-in-order cons nil tree)
(traverse (lambda (k v l r n)
(r (cons k v (l n))))
nil
tree))
(define (r-to-l-in-order cons nil tree)
(traverse (lambda (k v l r n)
(l (cons k v (r n))))
nil
tree))
(define (l-to-r-post-order cons nil tree)
(traverse (lambda (k v l r n)
(cons k v (r (l n))))
nil
tree))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment