#scheme #racket
#схема #ракетка
Вопрос:
Я представить сегодня сделать по британскому летнему времени дерево, используя список. Это список, отсортированный вариант, и строго возрастающей, без дубликатов. как (список 100 200 300 400)..
Ialready писать много кода. Это здесь. но ничего не работает..Может кто-нибудь изменить это, чтобы исправить?
Спасибо
(define (bst-tree lst)
(cond
[(empty? lst) empty]
[else
(local [(define (pivot lst)
(cond
[(= 1 (length lst)) (first lst)]
[(= 2 (length lst)) (first lst)]
[else (pivot (rest (foldl cons empty (rest (foldl cons empty lst)))))]))
(define less (filter (lambda (x) (< x (pivot lst))) lst))
(define greater (filter (lambda (x) (> x (pivot lst))) lst))]
(append (make-node pivot (bst-tree less) (bst-tree greater))))]))
Ответ №1:
Вот исправление: (append (make-node
(pivot lst)
(bst-tree less) (bst-tree greater)))
pivot
относится к функции, и, следовательно, определяющее порядок применения его в список возвращает числовое значение.