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 a)
- (cond
- [(equal? (node-left (pair-node a)) (node-right (pair-node a))) (pair-node a)]
- [(and (= (pair-updated a) 0) (node? (node-left (pair-node a))) (eq? (node-right (pair-node a)) '())) (make-node (read-node (make-pair (node-left (pair-node a)) (+ (pair-updated a) 1))) (make-node '() '()))]
- [(and (= (pair-updated a) 0) (node? (node-right (pair-node a))) (eq? (node-left (pair-node a)) '())) (make-node (make-node '() '()) (read-node (make-pair (node-right (pair-node a)) (+ (pair-updated a) 1))))]
- [(and (= (pair-updated a) 0) (node? (node-left (node-left (pair-node a)))) (eq? (node-left (node-right (pair-node a))) '())) (make-node (read-node (make-pair (node-left (pair-node a)) (+ (pair-updated a) 1))) (make-node (make-node '() '()) '()))]
- [(and (= (pair-updated a) 0) (node? (node-left (node-right (pair-node a)))) (eq? (node-left (node-left (pair-node a))) '())) (make-node (make-node (make-node '() '()) '()) (read-node (make-pair (node-right (pair-node a)) (+ (pair-updated a) 1))))]
- [(node? (pair-node a)) (make-node (read-node (make-pair (node-left (pair-node a)) (pair-updated a))) (read-node (make-pair (node-right (pair-node a)) (pair-updated a))))]
- )
- )
- (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))
- (read-node a-pair)
Advertisement
Add Comment
Please, Sign In to add comment