我有此密码 来自二叉树的定义
data BTree a = Empty | Node a (BTree a) (BTree a)
deriving (Eq, Show, Read)
函数大小的定义
size' :: BTree a -> Integer
size' Empty = 0
size' (Node _ l r) = size' l + size' r + 1
我的理解是,我有一棵空树或一棵有一个节点和两个孩子的树。 正确吗?
Node a (BTree a) (BTree a)
根据此定义,我只能有一个节点吗?
我正在对此进行测试
size' (BTree 2 (Node 3 empty) (Node 6 empty))
size' (BTree 5 (Node 3 empty) (Node 8 empty) empty)
size' (BTree 'A' (Node 'B' empty) (Node 'C' empty))
size' (Node 5 (BTree 3 empty) (BTree 8 empty) empty)
size' (Node 5 (BTree 3 empty) (BTree 8 empty))
但是所有这些都会导致错误
答案 0 :(得分:3)
您的定义说,制作BTree a
有两种方法:
Empty
Node x y z
中,x
的类型为a
,而y
和z
的类型为BTree a
。所以BTree Int
的一些示例是:
Empty
Node 0 Empty Empty
Node 1 (Node 2 Empty Empty) Empty