создание списка в дереве - PullRequest
0 голосов
/ 05 мая 2018

Не работает должным образом

(define (tree-insert v t)
  (cond((null? t)(make-tree v '() '()))
   ((eq? v (value t)) t)
   ((< v (value t)) (make-tree (value t)
                               (tree-insert v (left t))
                               (right t)))
   ((> v (value t)) (make-tree (value t)
                               (tree-insert v (right t))
                               (left t)))))
(define (insert-list l t)
  (if (null? l)
     t
     (insert-list (cdr l)
               (tree-insert(car l)t))))
(insert-list '(5 2 1 3 11 8 6 9 15 17) '())
; ==> (5 (2 (1 (17 () ()) (8 () ())) (3 (9 () ()) ())) (11 (15 () ()) (6 () ()))) 

1 Ответ

0 голосов
/ 05 мая 2018

вы меняете местами влево и вправо в случае>. попробуйте это вместо:

(define (tree-insert v t)
  (cond((null? t)(make-tree v '()'()))
   ((eq? v (value t)) t)
   ((< v (value t)) (make-tree (value t)
                               (tree-insert v (left t))
                               (right t)))
   ((> v (value t)) (make-tree (value t)
                               (left t)
                               (tree-insert v (right t))))))
...