【问题标题】:How to change the datatype of an existing tree in SML?如何更改 SML 中现有树的数据类型?
【发布时间】:2015-08-07 05:24:40
【问题描述】:

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

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

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

【问题讨论】:

  • 这里有个提示:写下这个convert函数的类型。它采用一种类型并返回另一种类型。然后想想你能用它收到的类型做什么。
  • 顺便说一句,我建议你编辑第二种类型的名称,这样更容易编译代码:datatype 'a their_tree = TheirEmpty | TheirNode of 'a their_tree * 'a * 'a their_tree

标签: recursion tree sml smlnj


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    相关资源
    最近更新 更多