我需要评估输入数字和二叉树的方案函数,并在二叉树中输出与数字深度相同的数据表达式。例如,树的根是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])))
答案 0 :(得分:0)
在递归中,您仍然以错误的顺序将参数传递回fetch-expression。首先是新n的值,然后是新树的值。
你仍然可以在足够深度内两次调用树深度?
(define deep-enough?
(λ (n bt)
(if (>= (tree-depth bt) n)
true
false)))
修复它
但是看看我对你的另一个问题的答案,没有必要有一个单独的功能来计算深度。只需使用可以回溯的功能开始遍历它。 (向呼叫者发出错误信号,并且如果尚未尝试任何有效路径,则让呼叫者尝试不同的路径)