Blob


1 (define (list->tree elements)
2 (car (partial-tree elements (length elements))))
4 (define (partial-tree elts n)
5 (if (= n 0)
6 (cons '() elts)
7 (let ((left-size (quotient (- n 1) 2)))
8 (let ((left-result (partial-tree elts left-size)))
9 (let ((left-tree (car left-result))
10 (non-left-elts (cdr left-result))
11 (right-size (- n (+ left-size 1))))
12 (let ((this-entry (car non-left-elts))
13 (right-result (partial-tree (cdr non-left-elts) right-size)))
14 (let ((right-tree (car right-result))
15 (remaining-elts (cdr right-result)))
16 (cons (make-tree this-entry left-tree right-tree)
17 remaining-elts))))))))