;; Question 5
(define-struct node (ssn name left right))
(define (search-bst n bstree)
(cond [(= n (node-ssn bstree)) (node-name bstree)]
[(> n (node-ssn bstree)) (search-bst n (node-left bstree))]
[(< n (node-ssn bstree)) (search-bst n (node-right bstree))]
[else false]))
(define (add-to-bst n s bstree)
(cond [(search-bst n bstree) bstree]
[(> n (node-ssn bstree)) (add-to-bst n s (node-left bstree))]
[(< n (node-ssn bstree)) (add-to-bst n s (node-right bstree))]
[(and (> n (node-ssn bstree))
(boolean? (node-left bstree)))
(make-node (node-ssn bstree) (node-name bstree)
(make-node n s false false) false)]
[(and (< n (node-ssn bstree))
(boolean? (node-right bstree)))
(make-node (node-ssn bstree) (node-name bstree)
false (make-node n s false false))]))