Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. (define (delete-node T v)
  2. (if (not (is-member? T v)) T
  3. (cond ((null? T) (list))
  4. ((< v (value T))
  5. (make-tree (value T) (delete-node (left T) v) (right T)))
  6. ((> v (value T))
  7. (make-tree (value T) (left T) (delete-node (right T) v)))
  8. (else
  9. (cond ((and (null? (right T)) (and null? (left T)))
  10. (list))
  11. ((and (null? (right T)) (not (null? (left T))))
  12. (left T))
  13. ((and (null? (left T)) (not (null? (right T))))
  14. (right T))
  15. (else
  16. (let ((rep-value (find-largest (left T))))
  17. (let ((new-left (delete-node (left T) rep-value)))
  18. (make-tree rep-value
  19. new-left (right T))))))))))
  20.  
  21.  
  22. (define t6 '(5 (2 (1 () ()) (3 () ())) (11 (8 (6 () ()) (9 () ())) (15 () (17 () ())))))
  23.  
  24. ;;outputs:
  25. ;;> (delete-node t6 11) --> from problem set pdf examples
  26. ;;(5 (2 (1 () ()) (3 () ())) (9 (8 (6 () ()) ()) (15 () (17 () ()))))
  27. ;;> (delete-node t5 6)
  28. ;;(5 (4 (3 () ()) ()) (7 () ()))
  29. ;;> (delete-node t1 4)
  30. ;;(3 (1 () ()) ())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement