如何在SML中更改现有树的数据类型?

时间:2015-05-25 17:27:42

标签: recursion tree sml smlnj

我需要解决这个问题。我真的不知道。任何帮助将不胜感激。我想需要进行遍历,但我不知道如何解决这个问题。提前谢谢。

再次考虑二元树的以下第一个数据类型定义:

datatype 'a tree = Empty | Node of { lT: 'a tree, key: 'a, rT: 'a tree }

在为这个数据类型定义的二叉树编写了一些函数之后,你想测试一下 他们。您在线搜索测试用例并查找具有实际定义的二叉树的数据库 使用以下第二种数据类型:

datatype 'a tree = Empty | Node of 'a tree * 'a * 'a tree

编写一个函数“convert”,它将第二个数据类型的二叉树作为输入,并将其转换为 第一个数据类型的等效树。

1 个答案:

答案 0 :(得分:0)

你是对的,你需要遍历树,这可以通过使用模式匹配在SML中优雅地实现。您将需要输入树上的case,如果它是Empty,则只返回Empty。如果它是一个Node,那么您将希望递归转换左右子树并将这些结果放入另一个表示中。这不应该需要超过4行代码。