EX 2.63

(define (left-branch tree) (cadr tree))
(define (right-branch tree) (caddr tree))
(define (make-tree entry left right)
(list entry left right))
(define (tree->list-1 tree)
(if (null? tree)
'()
(append (tree->list-1 (left-branch tree))
(cons (entry tree)
(tree->list-1 (right-branch tree))))))
(define (tree->list-2 tree)
(define (copy-to-list tree result-list)
(if (null? tree)
result-list
(copy-to-list (left-branch tree)
(cons (entry tree)
(copy-to-list (right-branch tree)
result-list)))))
(copy-to-list tree '()))
;(null? nil) in MIT scheme is true but in guile is false
;(null? '()) both is true.
(define tree1 (make-tree 7
(make-tree 3
(make-tree 1 '() '())
(make-tree 5 '() '()))
(make-tree 9 '()
(make-tree 11 '() '())
)
)
)
(define tree2 (make-tree 3
(make-tree 1 '() '())
- Login to post comments
- 1532 reads
Comments
Wed, 2007/03/28 - 09:39 — porco

append是个问题
...... full content is only available to community members.
- Login to post comments
Thu, 2008/02/14 - 12:52 — myself

这是遍历,不是查找!
...... full content is only available to community members.
- Login to post comments
Wed, 2008/11/12 - 06:54 — code17

考虑 append 也很简单,顺便试试 LaTeX
...... full content is only available to community members.
- Login to post comments
Wed, 2008/11/12 - 07:21 — code17

思考题:写出一个 tail-recursive 的 tree-> list
...... full content is only available to community members.
- Login to post comments
|
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> |