我正在努力解决这个问题超过2天,但仍然不知怎的,我无法解决它。 我必须在SCHEME中编写一个函数,该函数在树中获取列表并按排序顺序显示项目。
我定义树的方式是'(6(左...)(右...))
我选择树的功能:
(define (tree-sort tree)
(cond ((null? tree) '())
((> (car tree) (cadr tree))
(tree-sort (cadr tree)))
(else
(tree-sort (caddr tree))))
)
所以我想我也应该有一个功能来排序最深入的列表? 我真的不明白,这是我最后一次处理计划。我从来没有使用过堆栈流,所以如果格式错误,请原谅。
谢天谢地!
答案 0 :(得分:1)
既然您已经澄清了树已经排序,那么您正在寻找树的in-order遍历,它会返回元素的排序列表 - 我假设您对此感兴趣一个列表作为输出,因为问题中显示了基本情况。尝试这样的事情:
(define (tree-sort tree)
(if (empty-tree? tree)
'()
(append (tree-sort (left-subtree tree))
(list (value tree))
(tree-sort (right-subtree tree)))))
使用适当的过程来测试树是否为空以及访问每个节点的值,左右子树。上面的过程将返回一个带有树值的排序列表。