, . , , , , :
preorder , node . postorder . "", , node . levelorder? -, levelorder recurses, ? , "" , Tree?
( ..?) of levelorder , . !
, , :
element :: Tree a -> a
element (Nd x _) = x
subtrees :: Tree a -> [Tree a]
subtrees (Nd _ s) = s
, Haskell, , Tree :
data Tree a = Nd { element :: a, subtrees :: [Tree a] }
deriving Show
:
, levelorder Tree. Tree, - :
levelorder :: Tree a -> [a]
levelorder t = step [t]
where step [] = []
step ts = map element ts ++ step (concatMap subtrees ts)
, , preorder postorder do, .
, , ++ : :
bylevel :: Tree a -> [[a]]
bylevel t = step [t]
where step [] = []
step ts = map element ts : step (concatMap subtrees ts)
. . , .