Сегодня я представляю, как сделать BST-дерево с помощью списка. Это список с отсортированной версией и строго по возрастанию, без дубликатов. нравится (список 100 200 300 400)..
Я уже пишу много кода. Это здесь. но ничего не работает .. Может ли кто-нибудь изменить это, чтобы исправить?
Спасибо
(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))))]))
Вот исправление: (append (make-node
(pivot lst)
(bst-tree less) (bst-tree greater)))
pivot
относится к функции и, следовательно, оценивает процедуру, применяющую ее в списке, получает числовое значение.