Я хотел бы создать тип данных, который представляет собой двоичное дерево, которое имеет значения, хранящиеся только в листьях, а затем функцию sub
, чтобы проверить, является ли дерево поддеревом другого дерева. Вот мой код, но я понятия не имел, как реализовать функцию sub
.Бинарное дерево Haskell со значениями только в листьях
data BinaryTree a = Leaf a | Node (BinaryTree a) (BinaryTree a) deriving Show
makeBinTree :: [a] -> BinaryTree a
makeBinTree lst = head $ mrg leaves
where
leaves = map (\x -> Leaf x) lst
mrg [] = []
mrg [x] = [x]
mrg (x:y:xs) = mrg ((Node x y) : mrg xs)
sub :: Eq a => BinaryTree a -> BinaryTree a -> Bool
Слово предупреждения: Это, вероятно, довольно неэффективно. Я не уверен, есть ли более эффективный способ или нет. – PyRulez