hktony

Untitled

Sep 25th, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. (define-struct node (left right))
  2. (define-struct pair (node updated))
  3.  
  4. (define (read-node n m) (cond
  5. [(equal? n '()) '()]
  6. [(equal? (node-left n) (node-right n)) n]
  7. [(and (= m 0) (node? (node-left n)) (eq? (node-right n) '())) (make-node (read-node (node-left n) (+ m 1)) (make-node '() '()))]
  8. [(and (= m 0) (node? (node-right n)) (eq? (node-left n) '())) (make-node (make-node '() '()) (read-node (node-right n) (+ m 1)))]
  9. [(and (= m 0) (node? (node-left (node-left n))) (eq? (node-left (node-right n)) '())) (make-node (read-node (node-left n) (+ m 1)) (make-node (make-node '() '()) '()))]
  10. [(and (= m 0) (node? (node-left (node-right n))) (eq? (node-left (node-left n)) '())) (make-node (make-node (make-node '() '()) '()) (read-node (node-right n) (+ m 1)))]
  11. [(node? n) (make-node (read-node (node-left n) m) (read-node (node-right n) m))]
  12. )
  13. )
  14.  
  15. (define a (make-node (make-node '() '()) '()))
  16. (define b (make-node (make-node '() '()) (make-node '() '())))
  17. (define c (make-node (make-node '() '()) (make-node (make-node '() '()) (make-node '() '()))))
  18.  
  19. (define a-pair (make-pair a 0))
  20. (define b-pair (make-pair b 0))
  21. (define c-pair (make-pair c 0))
Advertisement
Add Comment
Please, Sign In to add comment