从列表中构建球拍中的 BST

Buidling BST in racket from a list

今天介绍的是用链表做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 指的是函数,因此对将它应用于列表的过程进行求值得到数值。