SICP 习题 2.28 的本质其实是树的遍历
题目要求我们实现一个叫fringe的过程,fringe的英文意思是边缘,花边的意思,题目的意思其实就是要我们遍历一棵树,然后以列表的形式返回这棵树的所有叶子。
该过程的实现和上面的deep-reverse差不多,都是遍历元素,如果元素是一个列表则递归调用fringe进入,如果元素是一个简单元素则直接组合起来。
代码如下:
(define (fringe input-list)
(if (null? input-list)
'()
(append (if (list? (car input-list))
(fringe (car input-list))
(list (car input-list)))
(fringe (cdr input-list)))))