Мне нужна помощь в 3 задачах. Я действительно новичок в Haskell и функциональном программировании.Двоичные функции дерева поиска в Haskell
data Tree = Node Int Tree Tree | Nil
-
Определить с помощью функции
collapse
collapse :: Tree -> [Int] collapse Nil = [] collapse (Node x y z) = (collapse y) ++ [x] ++ (collapse z)
Haskell-Function
check :: Tree -> Bool
, которая проверяет, является ли дерево является бинарное дерево поиска.Я проверяю это на дерево и получаю
2 4 7 8 10 | 5 6 10 12
. Здесь вы можете увидеть, что все значения в середине отсортированы, но я не знаю, как я должен это кодировать. -
Определение Haskell-Function
insert :: Int -> Tree -> Tree
который добавляет целочисленное значение в дерево и вернуться также бинарное дерево поиска. -
Определить с помощью функции
insert
(2) Haskell-Functionmerge :: Tree -> Tree -> Tree
, которая объединяет два дерева к другому бинарного дерева поиска.
'collapse' является обходным путем. Какое свойство взаимного обхода бинарных деревьев характеризует двоичные деревья поиска? –
Значение левого узла (int) двоичного дерева меньше родительского узла, а значение правого узла больше родительского узла и для каждого дочернего узла. – Chryb
Бинарное дерево является деревом двоичного поиска тогда и только тогда, когда его обход в порядке ...? –