如何遍历字符的二叉树并将它们转换为方案中的字符串

时间:2018-04-10 14:57:08

标签: scheme

I provided a picture, I have no idea how to start this or what to do. 我必须使用二进制字符树,并列出可以创建并转换为字符串的所有可能单词。

编写名为(遍历T)的SCHEME函数,该函数遍历这样的二叉树,并返回可以通过遵循从根节点到树中的叶节点的路径构造的所有单词的列表。例如,将您的函数应用于图1中的树应生成以下列表: (“case”“cast”“care”“cart”“crow”“croc”“crab”“cram”)

1 个答案:

答案 0 :(得分:0)

不是解决方案,而是一些提示:

不要过早从列表转换为字符串,专注于构建字符列表 将这些列表转换为字符串作为"后处理"一步。
(相关:不要开始编写一个可以同时执行所有操作的功能。问问自己"有没有我已经知道该怎么做的部分?")

假设您有一个包含字符的节点,从其左子树创建的所有字符列表的列表,以及来自其右子树的所有字符列表的列表。
你将如何创建包含子树列表中所有内容的列表,但是使用来自&#34的字符;这个"前面的节点?

也就是说,如果你有树

 a
/ \
n  t

从创建的'((#\n))'((#\t))子树中,您将如何生成'((#\a #\n) (#\a #\t))

然后考虑基本情况;空树产生了什么?

然后递归地结合你的想法。

在下一阶段,考虑如何从'((#\a #\n) (#\a #\t))'("an" "at")

(除了map之外,您可能还想使用appendconslist->string。)