Я новичок в Haskell, и я пытаюсь построить дерево, которое содержит целые числа, а каждый элемент в левом поддереве - < = значение узла. Это код, который я написал до сих пор, но я не знаю, как сделать рекурсию внутри. Буду признателен, если бы вы могли дать мне несколько советов.Построение дерева в Haskell
data Tree = Leaf | Node Int Tree Tree
deriving (Eq, Show, Read, Ord)
insert :: Int -> Tree -> Tree
insert x (Tree n i t1 t2) =
Из того, что я понимаю, что я должен проверить каждый узел дерева и посмотреть, если есть ИНТ к нему, а затем рекурсивно искать поддеревьев. Пожалуйста, помогите
благодаря
EDIT:
мне удалось сделать что-то, но это, кажется, что новые узлы не будут созданы или я проверяю это неправильно, это новый код:
data Tree = Leaf | Node Int Tree Tree
deriving (Eq, Show, Read, Ord)
insert :: Int -> Tree -> Tree
insert x Leaf = Node x Leaf Leaf
insert x (Node i t1 t2)
| x <= i = insert x t1
| otherwise = insert x t2
Чтобы проверить это, я пишу:
let tree = insert 5 (insert 10 (insert 11 (insert 12 (insert 15 tree))))
Но когда я пишу в GHCI:
tree
я получаю:
Node 5 Leaf Leaf
Я не понимаю, как я могу проверить, если есть узел, где я ищу или не – sokras
хорошо знать спасибо – sokras
я добавил редактирования. пожалуйста, не стесняйтесь помогать мне – sokras