[英]recursively building trees
I've recently started haskell and I tried to create a tree. 我最近开始使用haskell,并尝试创建一棵树。
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.