ツリーの定義は次のとおりです。data Tree = Leaf Char | Node (Char, Tree, Tree)
treeToInfix
次の形式で関数を書きたいと思います。
treeToInfix :: Tree -> String
ここではいくつかの例を示します。
treeToInfix (Node ('*', (Node ('+', (Leaf 'a'), (Leaf 'b'))), (Leaf 'c')))
-- => "(a+b)*c"
treeToInfix (Node ('-', (Node ('+', (Leaf 'a') ,(Leaf 'b'))), (Leaf 'c')))
-- => "a+b-c"
treeToInfix (Node ('-', (Leaf 'c'), (Node ('+', (Leaf 'a') ,(Leaf 'b')))))
-- => "c-(a+b)"
treeToInfix (Node ('*', (Node ('/', (Leaf 'a'), (Leaf 'b'))), (Node ('/', (Leaf 'c'), (Leaf 'd')))))
-- => "a/b*c/d"
treeToInfix (Node ('+', (Node ('-', (Leaf 'a'), (Node ('*', (Leaf 'b'), (Leaf 'c'))))), (Node ('/', (Leaf 'd'), (Leaf 'e')))))
-- => "a-b*c+d/e"
このプログラムのアルゴリズムについて助けが必要です。