Новостройка по британскому летнему времени в ракетки из списка

#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 относится к функции, и, следовательно, определяющее порядок применения его в список возвращает числовое значение.