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