2011-12-21

deniok: (Default)
2011-12-21 02:55 pm

Про деревья

Имеется тип
data Tree a = Nil | Branch (Tree a) a (Tree a)
Написать функцию
elemTree :: Eq a => a -> Tree a -> Bool
проверяющую наличие значения в дереве.

Первая приходящая в голову реализация не проходит следующий тест:

> let testTree n =  Branch (testTree n) n (testTree (n+1))
> 3 `elemTree` (testTree 1)
True


Код теста специально сливается с фоном, попробуйте сначала догадаться самостоятельно, в чём тут подвох.