home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0963.lha / SIOD / scm / remake-tree.scm < prev    next >
Text File  |  1993-02-22  |  1KB  |  33 lines

  1.  
  2. (define (dividi lis el p)
  3.        (if (eqv? (car lis) el)
  4.            (list p (cdr lis))
  5.            (dividi (cdr lis) 
  6.                    el 
  7.                    (append p 
  8.                            (list (car lis))))))
  9.  
  10. (define (separa lis n p)
  11.         (if (= n 0)
  12.             (list p (cdr lis))
  13.             (separa (cdr lis) 
  14.                     (-1+ n) 
  15.                     (append p 
  16.                             (list (car lis))))))
  17.  
  18. (define (costruisci pre in)
  19.         (if (null? pre)
  20.             the-empty-tree
  21.             (let* ((radice (car pre))
  22.                    (coppia1 (dividi in radice nil))
  23.                    (in-left (car coppia1))
  24.                    (in-right (cadr coppia1))
  25.                    (n (lenght in-left))
  26.                    (coppia2 (separa (cdr pre) n nil))
  27.                    (pre-left (car coppia2))
  28.                    (pre-right (cadr coppia2)))
  29.                   (make-tree (costruisci pre-left in-left)
  30.                              radice
  31.                              (costruisci pre-right in-right)))))
  32.         
  33.