(load "chez-init.ss") ; not needed if you are using DrScheme (define-datatype bintree bintree? [leaf-node (datum number?)] [interior-node (key symbol?) (left bintree?) (right bintree?)]) (define leaf-sum ; of a bintree (lambda (tree) (cases bintree tree [leaf-node (datum) datum] [interior-node (key left right) (+ (leaf-sum left) (leaf-sum right))]))) (define inorder ; lisinting of interior nodes in a bintree, (lambda (tree) (cases bintree tree [leaf-node (datum) '()] [interior-node (key left right) (append (inorder left) (list key) (inorder right))]))) (define list-to-bintree ; construct a bintree from a list representation. (lambda (t) (cond [(number? t) (leaf-node t)] [(symbol? (car t)) (interior-node (car t) (list-to-bintree (cadr t)) (list-to-bintree (caddr t)))]))) (define t2 (list-to-bintree '(a (b 3 4) 5)))