Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define-struct node (left right))
- (define-struct pair (node updated))
- (define (read-node n m) (cond
- [(equal? n '()) '()]
- [(equal? (node-left n) (node-right n)) n]
- [(and (= m 0) (node? (node-left n)) (eq? (node-right n) '())) (make-node (read-node (node-left n) (+ m 1)) (make-node '() '()))]
- [(and (= m 0) (node? (node-right n)) (eq? (node-left n) '())) (make-node (make-node '() '()) (read-node (node-right n) (+ m 1)))]
- [(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 '() '()) '()))]
- [(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)))]
- [(node? n) (make-node (read-node (node-left n) m) (read-node (node-right n) m))]
- )
- )
- (define a (make-node (make-node '() '()) '()))
- (define b (make-node (make-node '() '()) (make-node '() '())))
- (define c (make-node (make-node '() '()) (make-node (make-node '() '()) (make-node '() '()))))
- (define a-pair (make-pair a 0))
- (define b-pair (make-pair b 0))
- (define c-pair (make-pair c 0))
Advertisement
Add Comment
Please, Sign In to add comment