Scheme中的树排序功能

时间:2013-11-20 12:47:52

标签: sorting tree scheme racket

我正在努力解决这个问题超过2天,但仍然不知怎的,我无法解决它。 我必须在SCHEME中编写一个函数,该函数在树中获取列表并按排序顺序显示项目。

我定义树的方式是'(6(左...)(右...))

我选择树的功能:

(define (tree-sort tree)
 (cond  ((null? tree) '())
    ((> (car tree) (cadr tree))
     (tree-sort (cadr tree)))
    (else
     (tree-sort (caddr tree))))
)

所以我想我也应该有一个功能来排序最深入的列表? 我真的不明白,这是我最后一次处理计划。我从来没有使用过堆栈流,所以如果格式错误,请原谅。

谢天谢地!

1 个答案:

答案 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)))))

使用适当的过程来测试树是否为空以及访问每个节点的值,左右子树。上面的过程将返回一个带有树值的排序列表。