Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define (delete-node T v)
- (if (not (is-member? T v)) T
- (cond ((null? T) (list))
- ((< v (value T))
- (make-tree (value T) (delete-node (left T) v) (right T)))
- ((> v (value T))
- (make-tree (value T) (left T) (delete-node (right T) v)))
- (else
- (cond ((and (null? (right T)) (and null? (left T)))
- (list))
- ((and (null? (right T)) (not (null? (left T))))
- (left T))
- ((and (null? (left T)) (not (null? (right T))))
- (right T))
- (else
- (let ((rep-value (find-largest (left T))))
- (let ((new-left (delete-node (left T) rep-value)))
- (make-tree rep-value
- new-left (right T))))))))))
- (define t6 '(5 (2 (1 () ()) (3 () ())) (11 (8 (6 () ()) (9 () ())) (15 () (17 () ())))))
- ;;outputs:
- ;;> (delete-node t6 11) --> from problem set pdf examples
- ;;(5 (2 (1 () ()) (3 () ())) (9 (8 (6 () ()) ()) (15 () (17 () ()))))
- ;;> (delete-node t5 6)
- ;;(5 (4 (3 () ()) ()) (7 () ()))
- ;;> (delete-node t1 4)
- ;;(3 (1 () ()) ())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement