好的我有这棵树:
a6
/ | \
a1 a2 p1
/ \
a1 a2
我需要一些代码来遍历它。 在深度清单中,这是对的吗? (a1 a2(a1 a2))? 我已经有了一个返回childerns节点的方法。 例如,如果我称之为, (功能树a6)=(a1 a2 p1) 任何想法?
答案 0 :(得分:1)
我对你的具体要求有点暗淡,但我会尽力让你开始。
您提到的树结构的深层列表表示应如下所示:
'(a6 (a1) (a2) (p1 (a1) (a2)))
大约一年前,我写了一些你可能觉得有用的博客文章。 Trees in Scheme: Representation和Trees in Scheme: Parsing。
在“Parsing”文章中,我演示了使用相互递归(一种递归技术,其中两个过程相互定义)来有效地解析树。这应该会有所帮助。
最后,我还建议您阅读Simply Scheme的第18章,以便对该主题进行一些详尽的介绍。
祝你好运。