Haskell中的将军树=玫瑰树?一棵玫瑰树的驿站吗?

时间:2018-08-11 12:54:40

标签: haskell tree postorder

我应该为Tree创建一个数据结构,其中每个Node的分支数量都不确定。我猜这将是一棵玫瑰树。

data GTree a = Node a [GTree a] 

现在,我应该编写一个postorderG函数,该函数将以后序顺序给我列出我一般中的所有元素 我写了这封信,但这似乎不对……有人可以帮我吗?

postorderG :: GTree a -> [a]
postorderG (Node x l r) = postorder l ++ postorder r ++ [GTree x]

1 个答案:

答案 0 :(得分:0)

<View android:background="#000" android:layout_below="@+id/textView" android:layout_width="match_parent" android:layout_height="2dp" /> type 构造函数,而不是数据构造函数;将使用GTree而非Node x []创建一棵树。

但是,您根本不需要在此处创建树。您只需要在输入树的根目录中存储一个 value 即可获得返回值中的最终列表。

GTree x

如果愿意,可以创建一个单例树以附加到postorderG :: GTree a -> [a] postorderG (Node x ch) = concatMap postorderG ch -- [a] ++ [x] -- [a], not [GTree a] ,然后将ch应用于每个孩子并按顺序应用新的单例。

postOrderG

利用postorderG (Node x ch) = concatMap postorderG (ch ++ [Node x []]) 单子而不是使用[],RHS看起来就像是

concatMap

(ch >>= postorderG) ++ [x]