收集列表中给定级别的节点。如果从根到节点的路径长度为 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 = ""
答案 0 :(得分:1)
从代码判断,您的数据类型是
data BTree = Empty | Branch Char BTree BTree
修改语法,如
| n > 1 = ((n-1) `blevel` tl) ++ ((n-1) `blevel` tr)
,这就是全部。
BTW blevel/3
表示Prolog,而不是Haskell。