У меня есть двоичное дерево, определенное следующим образом:
data BSTree = Void | BSNode BSTree Integer BSTree
и хотел бы написать функцию
subTree:: Integer -> Integer -> BSTree -> BSTree
который возвращает все подмножество деревьев с ключом ‹= ‹ b.
Я попробовал следующее
subTree:: Integer -> Integer -> BSTree -> BSTree
subTree a b Void = Void
subTree a b (BSNode leftTree key rightTree)
| key < a = BSNode Void key (subTree key b rightTree)
| b < key = BSNode (subTree a key leftTree) key Void
| a <= key && b > key = BSNode (subTree a key leftTree) key (subTree key b rightTree)
но не получить правильный вывод. Может ли кто-нибудь указать на ошибку в моей логике?