Я пытаюсь решить аналогичную проблему (найти кратчайший список в дереве списков), и я думаю, что решение этой проблемы было бы хорошим началом.Как найти узел, содержащий минимальный элемент в двоичном дереве в Haskell?
Учитывая тип данных, как
data (Ord a, Eq a) => Tree a = Nil | Node (Tree a) a (Tree a)
Как найти узел, который содержит минимальный элемент в бинарном дереве выше? Пожалуйста, не то, чтобы это не двоичное дерево поиска.
Я пытаюсь думать рекурсивно: минимум - это минимум между левым, правым поддеревьями и текущим значением. Тем не менее, я изо всех сил пытаюсь перевести это на код Haskell. Одна из проблем, с которыми я сталкиваюсь, заключается в том, что я хочу вернуть дерево, а не только значение.
создать [ 'Foldable'] (http://blog.jakubarnold.cz /2014/07/30/foldable-and-traversable.html) экземпляр и 'fold' с' min'. – Shanthakumar