0

我需要评估一个输入数字和二叉树的方案函数,它输出与数字具有相同深度的二叉树中的数据表达式。例如,一棵树的根是 1,子树的根是 2,依此类推。

这是我到目前为止所拥有的,并且我不断收到错误消息Error in null?: expected a list; got '1'.(这是解决我之前询问过的问题的另一种方法)您能否使用我已经使用过的术语来解释这一点,因为我是方案编程的新手。

谢谢

(define fetch-exp (λ (n bt) 
  (cond [(not (deep-enough? n bt)) ▽#f]
        [(one? n) (root bt)]
        [(deep-enough? n (left-tree bt)) 
         (fetch-exp (left-tree bt) (sub1 n))] 
        [(deep-enough? n (right-tree bt)) 
         (fetch-exp (right-tree bt) sub1 n)] 
        [else ▽#f]))) 

(define deep-enough? 
 (λ (n bt) 
  (cond [(> (tree-depth bt) n) ▽#t] 
        [(equal? (tree-depth bt) n) ▽#t]      
        [else ▽#f])))
4

1 回答 1

0

在递归中,您仍然以错误的顺序将参数传递回 fetch-expression。首先是新 n 的值,然后是新树的值。

您仍然可能在足够深的范围内两次调用树深度吗?

(define deep-enough? 
 (λ (n bt) 
  (if (>= (tree-depth bt) n) 
      true
      false)))

修复它

但是看看我对你其他问题的回答,不需要单独的函数来计算深度。只需使用可以回溯的函数开始遍历它。(向调用者发出错误信号,如果尚未尝试任何有效路径,则让调用者尝试不同的路径)

于 2013-08-21T03:44:11.520 回答