дерева Учитывая это рекурсивная древовидную структуруИзменение значения листьев дерева к упорядоченной последовательности, сохраняя при этом структура
data Tree = Leaf Int | Node Tree Tree deriving Show
Я хотел бы, чтобы нормализовать его таким образом, что сохраняет структуру дерева, но делает целые числа в листья последовательны в глубинах - первый порядок. Как я могу это достичь? Мой текущий код настройки выглядит следующим образом:
myTree = Node (Leaf 3) (Node (Leaf 5) (Leaf 2))
myTree' = normalize myTree
-- preserve tree structure, but make Ints sequential in depths-first traversal
normalize :: Tree -> Tree
normalize = id -- todo: implement
main = do
print myTree -- prints : Node (Leaf 3) (Node (Leaf 5) (Leaf 2))
print myTree' -- should print: Node (Leaf 1) (Node (Leaf 2) (Leaf 3))
[Отлично работает] (http://ideone.com/bfO62J) (немного упрощенная функция состояния). Спасибо. –