;; Code from lecture 4 (forgive the lack of comments!) (define (myfilter pred? L) (cond ((null? L) L) ((pred? (first L)) (cons (first L) (myfilter pred? (rest L)))) (else (myfilter pred? (rest L))))) (define (drop-more k L) (filter (lambda (x) (<= x k)) L)) (define T1 '(10 (2 () (5 () ())) (15 () (60 () ())))) (define (find item BST) (if (null? BST) #f (let ((root (first BST)) (LEFT (second BST)) (RIGHT (third BST))) (cond ((= root item) #t) ((< item root) (find item LEFT)) (else (find item RIGHT)))))) (define (traverse BST) (if (null? BST) '() (let ((root (first BST)) (LEFT (second BST)) (RIGHT (third BST))) (append (traverse LEFT) (cons root (traverse RIGHT)))))) (define (findmin BST) (let ((root (first BST)) (LEFT (second BST)) (RIGHT (third BST))) (if (null? LEFT) root (findmin LEFT)))) (define (size BST) (if (null? BST) 0 (let ((root (first BST)) (LEFT (second BST)) (RIGHT (third BST)) ) (+ 1 (size LEFT) (size RIGHT)0)))) (define (insert item BST) (if (null? BST) (list item '() '()) (let ((root (first BST)) (LEFT (second BST)) (RIGHT (third BST))) (if (< item root) (list root (insert item LEFT) RIGHT) (list root LEFT (insert item RIGHT))))))