我是该计划的新手,我正在尝试学习如何遍历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而不是继续读入嵌套列表。
任何想法和建议都值得赞赏。这是我第一次发布问题,所以请耐心等候:)
(define (treeTraversal a)
(if (null? a)
#!null
(if (pair? a)
(cons (treeTraversal (car a))
(treeTraversal (cdr a)))
a)))
将遍历并复制您的树。