【发布时间】:2017-05-23 15:39:02
【问题描述】:
大家好,我有问题。我想删除一棵树的所有叶子。
我的树的初始值是data NBaum a = NBlatt a | NKnoten a [NBaum a]。我不知道我怎么能做到这一点,哪个是 Nblatt 为空的命令。也许你们可以帮助我。
我的函数应该将一个 NBaum 作为输入,输出也是一个 NBaum。entferneBlaetter :: NBaum a -> NBaum a
我已经尝试过这段代码,但它是错误的:
entferneBlaetter (NBlatt _) = NBlatt "test"
entferneBlaetter (NKnoten a b) = NKnoten a (entferneBlaetter_help b)
【问题讨论】:
-
entferneBlaetter (NBlatt 1)应该评估什么? -
如果你给方法一个
NBlatt作为初始值呢?你不能从一片叶子中移除一片叶子...... -
此外,代码本身一开始并没有错,它只取决于您将如何处理
entferneBlaetter_help。 -
你的树可以保存多少个
a值?它可以保存一个a值吗? (有多少种方式?)叶子是树吗? (它是,根据数据定义)。如果从 1 元素叶树中删除叶,结果不应该保持零a值吗?你的树可以保持零a值吗?Nblatt 7和NKnoten 7 []有区别吗?你真的需要Nblatt a吗? -
最好明确定义“叶子”的含义,因为
NBlatt "test"和NKoten "test" []都不会“递归”并保留其他节点。两个都要删除吗?