(define-struct node (ssn name left right)) (define (add-to-bst n s bstree) (cond [(= n (node-ssn bstree)) bstree] [(and (> n (node-ssn bstree)) (boolean? (node-left bstree))) (make-node (node-ssn bstree) (node-name bstree) (node-left bstree) (make-node n s false false))] [(and (< n (node-ssn bstree)) (boolean? (node-right bstree))) (make-node (node-ssn bstree) (node-name bstree) (make-node n s false false) (node-right bstree))] [(> n (node-ssn bstree)) (make-node (node-ssn bstree) (node-name bstree) (node-left bstree) (add-to-bst n s (node-right bstree)))] [(< n (node-ssn bstree)) (make-node (node-ssn bstree) (node-name bstree) (add-to-bst n s (node-left bstree)) (node-right bstree))])) (define tree (make-node 15 'd (make-node 14 'h (make-node 13 'r false false) (make-node 16 'k false false)) false)) > (add-to-bst 12 'r tree) (make-node 15 'd (make-node 12 'r false false) false)