All pastes #221910 Raw Edit

Miscellany

public text v1 · immutable
#221910 ·published 2006-10-25 23:13 UTC
rendered paste body
(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)