在方案中将节点添加到树中

时间:2014-06-04 04:19:01

标签: scheme racket

在方案一(sumanodos-pareja-tree tree)函数中定义了一个树 generic并返回一个新的通用树,其中每个数据都是包含数据的对 原始(左)及其子节点的总和(右):

我这样做:

(define (sumanodos-pareja-tree tree)
  (let ((bosque-sumados (map sumanodos-pareja-tree (hijos-tree tree))))
    (make-tree (cons (dato-tree tree) (suma-datos-raiz bosque-sumados))
               bosque-sumados)))

(define (suma-datos-raiz bosque-sumados)
  (if (null? bosque-sumados) 0
      (let ((primer-arbol (car bosque-sumados)))
        (+ (car (dato-tree primer-arbol))
           (cdr (dato-tree primer-arbol))                
           (suma-datos-raiz (cdr bosque-sumados))))))

(define tree22 '(2 (7 (1 (10) (4))
                    (5))
                 (6 (2 (3)))
                 (4)))

(sumanodos-pareja-tree tree22)

但它会返回此错误;

cons: second argument must be a list, but received 2 and 42
我能做什么?

1 个答案:

答案 0 :(得分:0)

这是对某些Racket学习语言的限制。使用list代替cons