计划二叉搜索树添加元素

Scheme Binary Search Tree Adding Elements

首先,我想编写一个函数:

接受:

输出:

代码

(define (recurse-lst bst lst)
  (cond [(empty? roster) empty]
        [(empty? lst) empty]
        [else (recurse-lst (bst-add bst (first lst)) (rest lst))]))

; helper function
(define (bst-add bst sublst)
  (cond [(empty? bst) (make-node (first sublst) empty empty)]
        [(< (first sublst) (node-key bst))
         (make-node (node-key bst)
                    (bst-add (node-left bst) (first sublst))
                    (node-right bst))]
        [else
         (make-node (node-key bst) (node-left bst)
                    (bst-add (node-right bst) (first sublst)))]))

问题

我目前正在努力使它适用于嵌套列表;例如 (list (list 1) (list 2)...),每个子列表中只有一个元素。但是,它似乎不起作用并且 bst-add 中的 (first sublst) 将 sublst 转换为数字,例如 (first 1).

我想我以前在其他代码中也有过类似的错误,但我不记得是什么时候出现的错误了。

现在你有

(define (recurse-lst bst lst)
   (cond [(empty? roster)
       ....

"lst".

"roster".

您需要始终在 SO 上的帖子中包含您的错误消息。

接下来。你调用 (bst-add bst (first lst)) 所以那个调用中的第二个参数已经是一个数字。但是在 bst-add 的定义中,您将第二个参数命名为“sublst”并将其视为列表。无需再服用 first。事实上,取 first 一个数字是错误的。