我应该为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]
答案 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]