我有一個函數,可以按給定順序(中綴,前綴,後綴和反轉中綴,前綴,後綴)將二叉樹縮減爲節點值列表。下面的代碼工作,但我不知道是否有辦法做到這一點不只是一個順序不同的參數重複函數實現6倍:我該如何避免重複類似的表情?
data DOrd = Infix | Praefix | Postfix | GInfix | GPraefix | GPostfix
data BTree = Nil | BNode Int BTree BTree deriving (Eq,Ord,Show)
flatten :: BTree -> DOrd -> [Int]
flatten Nil _ = []
flatten (BNode n b1 b2) Infix = flatten b1 Infix ++ [n] ++ flatten b2 Infix
flatten (BNode n b1 b2) Praefix = [n] ++ flatten b1 Praefix ++ flatten b2 Praefix
---6 times basically the same for all the elements in DOrd
我想過函或基本上延伸深海資源開發有限公司枚舉到更復雜的結構 - 但我不知道如何。
TU Vienna? ;-)昨天自己做了。 – firefrorefiddle
@Mike:是的:)我今天也問了導師,他也不知道更好的解決方案。 – mort