标准ML二叉树

时间:2010-11-05 03:25:47

标签: smlnj ml sml

我仍然遇到这个问题所以我可以要求更多的帮助。

我们得到了:

datatype which = STRING of string | INT of int

第1部分。我们被告知我们需要为包含“which”类型值的二叉树创建另一个名为whichTree的数据类型,其中数据仅位于树的叶子处。

我认为这是正确答案:

datatype whichTree = Empty | Leaf of which | Node of whichTree*whichTree;

事实证明这不像我跑的那样:

val inttree = Node(Leaf(1), Leaf(2));

我收到错误。

我能够弄清楚我可以做这样的事情:

datatype 'a whichTree = Empty | Leaf of 'a | Node of 'a whichTree * 'a whichTree;

datatype whichTree = Empty | Leaf of int | Node of whichTree*whichTree;

但是这些对我来说都不正确,因为在我的第一种情况下我的数据类型名称中有一个'a in和它在我的另一个中我说的是当我应该能够通过使用哪个来指定字符串或int时的叶。

有人能告诉我它的正确答案或给我一些帮助吗?

1 个答案:

答案 0 :(得分:4)

您对whichTree的定义是正确的,您只是错过了whichinttree的构造函数:

val inttree = Node(Leaf(INT 1), Leaf(INT 2))