The guard:
| tree == Empty = False
can never be true, since in the head of your clause:
isLeaf node tree@(Node el left right)
you say that this is a Node, not an Empty. This is also the case that you did not cover: in case you pass an Empty (and eventually you can pass an Empty due to recursion), no pattern will match.
That being said, I think you make this too complicated. You can write this as:
isLeaf :: Eq a => a -> BTree a -> Bool
isLeaf _ Empty = False
isLeaf x (Node x' Empty Empty) = x == x'
isLeaf x (Node _ l r) = isLeaf x l || isLeaf x r
or with a where clause:
isLeaf :: Eq a => a -> BTree a -> Bool
isLeaf x = go
where go Empty = False
go (Node x' Empty Empty) = x == x'
go (Node _ l r) = go l || go r
isLeaf node Empty? - Willem Van Onsem