假设我有一棵二叉树。在Haskell中,一个漂亮的打印递归深度如何?
main = putStrLn $ printTree tree
data Tree = Empty | Node Int (Tree) (Tree) deriving (Show)
tree = Node 4 (Node 3 Empty (Node 2 Empty Empty)) Empty
printTree :: Tree -> String
printTree x = case x of
Node num treeA treeB -> show num ++ "\n" ++ printTree treeA ++ "\n" ++ printTree treeB
Empty -> "Empty"
输出
*Main> main
4
3
Empty
2
Empty
Empty
Empty
所需的输出(通过选项卡或双空格分隔是罚款)
*Main> main
4
3
Empty
2
Empty
Empty
Empty
首先返回'[String]',而不是'String'。使输出成为行列表可让您轻松修改递归调用产生的每一行。 – Carl 2013-02-26 02:04:03