在给定级别上收集二叉树的节点

时间:2018-01-30 03:54:51

标签: haskell tree binary-tree

收集列表中给定级别的节点。如果从根到节点的路径长度为 N-1 ,则二叉树的节点处于 N 级别。根节点位于 1 级别。编写谓词blevel/3以收集列表中给定级别的所有节点。

这是我在Haskell中的代码。我不知道哪里错了:

-- Problem 5: BTree levels 
blevel :: Int -> BTree -> String
blevel _ Empty = ""
blevel n (Branch v tl tr)
  | n == 1 = [v]
  | n > 1 = n-1 (blevel tl)  ++ n-1 (blevel tr)
  | otherwise = ""

1 个答案:

答案 0 :(得分:1)

从代码判断,您的数据类型是

data BTree = Empty | Branch Char BTree BTree

修改语法,如

    | n > 1 = ((n-1) `blevel` tl)  ++ ((n-1) `blevel` tr)

,这就是全部。

BTW blevel/3表示Prolog,而不是Haskell。