编写一个Scheme过程路径,该路径采用整数n
和包含整数bst
的二叉搜索树n
,并返回一个1和0的字符串。向左移动对应于字符零('0')
,向右移动对应于字符('1')
。
例如:
(path 17 '(14 (7 () (12 () ()))
(26 (20 (17 () ())())(31 () ()))))
"100".
在上面的例子中,当我们找到路径时,我们得到字符串100。我曾尝试但我的路径不正确。
答案 0 :(得分:1)
您目前没有提供您编写的代码,因此我将草拟答案,以便您可以使用自己的解决方案填写空白。假设n
在树中:
(define (path n bst)
(cond ((< <???> n) ; if the current element is less than n
(string-append "1" <???>)) ; append 1, advance recursion to the right subtree
((> <???> n) ; if the current element is greater than n
(string-append "0" <???>)) ; append 0, advance recursion to the left subtree
(else ; we found n
<???>))) ; base case, end recursion with empty string
诀窍是遍历树并同时累积答案;鉴于输出是一个字符串,我们使用string-append
一路构建它。