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

How to change the datatype of an existing tree in SML?

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

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

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" 将第二种数据类型的二叉树作为输入并将其转换为 第一种数据类型的等效树。

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