【发布时间】:2013-10-23 17:12:03
【问题描述】:
我想知道如何将列表中的元素插入二叉搜索树。我想知道为什么下面的代码不能按我的预期工作。输出是 '((4 1 5 13 6) () ()) 我的下一个问题是对列表中的元素进行排序,但现在我只想插入它们。
我的输出对于我所说的问题是否正确?我的代码如下:
( define ( make-tree value left right )
( list value left right ))
( define ( value tree ) ( car tree ))
( define ( left tree ) ( cadr tree ))
( define ( right tree ) ( caddr tree ))
(define (insert-list L T)
(cond ((null? T) (make-tree L '() '()))
((= (car L) (value T)) T)
((< (car L) (value T)) (make-tree (value T)
(insert-list (car L) (left T))
(right T)))
((> (car L) (value T)) (make-tree (value T)
(left T)
(insert-list (car L) (right T))))))
【问题讨论】:
-
这个函数怎么调用?你展示了一些输出,但输入是什么?目前尚不清楚您要尝试做什么。由于您将
(car L)与T的值进行比较,因此您似乎正在尝试将L的first 元素插入T,但是您的递归调用是用(car L)制作,而不是L。你试图做什么?
标签: recursion scheme binary-tree