I've recently started haskell and I tried to create a tree.
I'm given the definitions as:
import Data.Char (toLower, toUpper)
import Data.Tree (Tree(Node))
import qualified Data.Set as Set
import Data.Set (Set, empty, insert)
data Mt = Leaf Integer | Branch Integer Integer Mt deriving Show
buildTree :: a −> b −> Mt
I feel myself totally lost. Can anyone help me to write that function?
import qualified Data.List as L
data Mt = Null | Node Integer [Mt] deriving Show
buildTree _ [] = Null
buildTree [] _ = Null
buildTree prelist postlist =
let n = head prelist
restofnodespre = tail prelist
restofnodespost = init postlist
subtrees = maketree restofnodespre restofnodespost
treelist = map (\(pr, ps) -> buildTree pr ps) subtrees
in
Node n treelist
maketree _ [] = []
maketree [] _ = []
maketree pre post =
let s = head pre
rest = takeWhile (/=s) post
newpost = rest ++ [s]
newpre = L.intersect pre newpost
remainingpre = pre L.\\ newpre
remainingpost = post L.\\ newpost
in
(newpre , newpost): (maketree remainingpre remainingpost)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.