我试图了解树木中的标签,但我无法理解。这是我的树的Datentyp:
data Tree = Node (Label -> Label) Label [Tree]
type Label = Int
我真的不明白,(Label - > Label)和Label之间有什么区别? 我怎样才能从这些函数中得到正确的结果?
tcm :: (Label -> Bool) -> (Label -> Label) -> Tree -> Tree
tzp :: (Label -> Label -> Label) -> Tree -> Tree -> Tree
tmax :: Label -> Tree -> (Label -> Label)
以下是树和类似函数的不同datentyp的示例树和类似示例:
t1 = Null
t2 = Tree 2 (Tree 3 Null Null) (Tree 5 Null Null)
t3 = Tree 2 (Tree 3 (Tree 5 Null Null) Null) (Tree 7 Null Null)
data Tree = Null | Tree Label Tree Tree deriving (Eq,Show)
type Label = Integer
但是在我的例子中,树是空的还是什么?
tcm :: (Label -> Label) -> Tree -> Tree
tzp :: (Label -> Label -> Label) -> Tree -> Tree -> Tree
tcm (+1) t1 == Null
tcm (+1) t2 == Tree 3 (Tree 4 Null Null) (Tree 6 Null Null)
tcm (+1) t3 == Tree 3 (Tree 4 (Tree 6 Null Null) Null) (Tree 8 Null Null)
tzp (+) t1 t2 == Null
tzp (+) t2 t3 == Tree 4 (Tree 6 Null Null) (Tree 12 Null Null)
有人可以帮助我使用这些功能和树吗?
答案 0 :(得分:1)
(Label - > Label)和Label之间的区别在于前者是一个函数,在给定Label的情况下,它产生一个新的Label。
关于你的下一个问题:在第一个Tree数据类型中,树确实不能为Null,因为您的数据类型定义不允许这样做。
除此之外,您已使用二叉树标记标记了您的问题,但您希望澄清的数据类型不是二叉树的数据类型,因为列表的长度可能不同。