Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; (transform '(A 2 B 0 C 2 D 0 E 0)) => (A (B) (C (D) (E)))
- (defun transform(l)
- (if (null l)
- nil
- (tree-sequence l)))
- (defun tree-sequence(l)
- (case (cadr l)
- (0 (values (list (car l)) (cddr l)))
- (1 (multiple-value-bind (left-subtree rest-of-list) (tree-sequence (cddr l))
- (values (list (car l) left-subtree) rest-of-list)))
- (t (multiple-value-bind (left-subtree rest-of-list) (tree-sequence (cddr l))
- (multiple-value-bind (right-subtree rest-of-rest) (tree-sequence rest-of-list)
- (values (list (car l) left-subtree right-subtree) rest-of-rest))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement