树中节点的属性列表

时间:2014-10-18 03:33:05

标签: list recursion racket nodes

我在使用DrRacket时遇到了一个小问题。我已经在C,C ++,Java,Python等方面进行了相当广泛的编程,但之前从未使用过函数式编程语言,因此我被绊倒了。

我有一个节点,我需要返回一个" eye-color"该节点的特征,以及它的所有父元素(以及父母'父母等)。这就是我所拥有的,我无法弄清楚我哪里出错了。我怀疑它与我必须添加的所有“空白”有关,因为我不能真正得到那些。那么多该死的括号,哈哈。它使一切正确,但是有一堆其他空间或其他东西而不是一个列表。

(define (eye-colors f)
  (cond [(empty? f) empty]
        [ else (cons (cons (child-eyes f) (eye-colors (child-mom f))) (eye-colors (child-mom f)))]))

我对一个特定节点的输出是:

(list
 (list
  'blue
  (list 'green (list 'brown))
  (list 'blue))
 (list 'orange))

应该是这样的:

(list 'blue 'green 'brown 'blue 'orange)

非常感谢您提供的任何帮助!!

1 个答案:

答案 0 :(得分:0)

知道了!由于缺点,问题是嵌套列表。通过将第一个缺点切换为追加来解决问题,现在一切都很好。工作代码如下。

(define (eye-colors f)
  (cond [(empty? f) empty]
        [ else (append (cons (child-eyes f) (eye-colors (child-mom f))) (eye-colors (child-dad f)))]))