给定一棵二叉树,我想检查它是否具有堆属性,例如,如果 B 是 A 的子节点,则 key(A)>=key(B):
data Tree a = Leaf|Node a (Tree a)(Tree a)
我已经开始了我的功能如下:
isHeap :: Tree a -> Bool
isHeap Leaf = True
isHeap (Node a left right) = if (Node a)>= isHeap(left) && (Node a)>= isHeap(right) then True else False
这是错误的,因为 GHCI 告诉它无法将预期类型 Tree a->Tree a->Tree a 与实际类型 Bool 匹配?
我知道我错了,但我认为它在正确的轨道上。有任何想法吗?