我是该计划的新手,我正在尝试学习如何遍历B树。我限于该语言中的某些命令,这使得此操作变得更加复杂。
这是我到目前为止所拥有的:
(define tree'("R" 100 999
(
("R" 100 199
(
("L" 120 140 160 180)
)
)
("R" 200 299
(
("L" 220 240 260 280)
)
)
)))
(define (treeTraversal a)
(if(equal? (null? a) #t) 0
(cdr (treeTraversal (cdr a)))))
(treeTraversal tree)
当我通过调试器运行它时,它表明它在列表中排在最前面,先剪切“ R”,然后是100,然后是999,但是从那里开始,列表变为null,并在调试器中显示“()”。之后,我得到了错误:
mcdr:违反合同
预期:对吗?
给定:0
我知道它返回0,因为该函数现在看到一个空列表,但是我不明白为什么列表变为null而不是继续读入嵌套列表。
任何想法和建议都值得赞赏。这是我第一次发布问题,请耐心等待:)
答案 0 :(得分:0)
(define (treeTraversal a)
(if (null? a)
#!null
(if (pair? a)
(cons (treeTraversal (car a))
(treeTraversal (cdr a)))
a)))
将遍历并复制您的树。