簡體   English   中英

遞歸地建造樹木

[英]recursively building trees

我最近開始使用haskell,並嘗試創建一棵樹。

我給的定義為:

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

我感到自己完全迷失了。 誰能幫我編寫該功能?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM