Created
August 29, 2013 13:47
-
-
Save yakreved/6378315 to your computer and use it in GitHub Desktop.
sicp 2.63
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(define (entry tree) (car tree)) | |
(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 '())) | |
(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 '() '()) | |
(make-tree 7 | |
(make-tree 5 '() '()) | |
(make-tree 9 | |
'() | |
(make-tree 11 '() '()))))) | |
(define tree3 (make-tree 5 | |
(make-tree 3 | |
(make-tree 1 '() '()) | |
'()) | |
(make-tree 9 | |
(make-tree 7 '() '()) | |
(make-tree 11 '() '())))) | |
(define tree4 (make-tree 5 | |
(make-tree 3 | |
(make-tree 7 '() '()) | |
'()) | |
(make-tree 11 | |
(make-tree 1 '() '()) | |
(make-tree 10 '() '())))) | |
(tree->list-1 tree1) | |
(tree->list-2 tree1) | |
(tree->list-1 tree2) | |
(tree->list-2 tree2) | |
(tree->list-1 tree3) | |
(tree->list-2 tree3) | |
(tree->list-1 tree4) | |
(tree->list-2 tree4) | |
;Эти процедуры делают одно и то-же, просто одна итеративная со сложностью О(n), другая рекурсивная с логарифмической сложностю. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment