(define-datatype tree tree? (tree-null) (tree-node (datum number?) (left tree?) (right tree?))) (define add-tree (lambda (n t) (if (tree? t) (cases tree t (tree-null () (tree-node n t t)) (tree-node (datum left right) (if (< n datum) (tree-node datum (add-tree n left) right) (tree-node datum left (add-tree n right)))) ) 'error-not-tree) ) ) (define search-tree (lambda (n t) (if (tree? t) (cases tree t (tree-null () #f) (tree-node (datum left right) (cond ((eq? n datum) #t) ((< n datum) (search-tree n left)) (else (search-tree n right)))) ) 'error-not-tree) ) )