Я пытаюсь написать функцию, которая отображает дерево, подставляя блоки дерева с / или \ (левый или правый дочерний элемент) плюс значение Int под ними.
Дерево определяется следующим образом:
data Tree x
= Null
| Leaf x
| Node (Tree x) x (Tree x)
deriving Show
и может содержать только пять однозначных значений, например, следующее дерево:
Node(Node(Leaf 1)(2)(Leaf 3))(3)(Node(Null)(4)(Leaf 5))
будет отображаться так:
3
/ \
2 4
/ \ \
1 3 5
Я полагаю, что при большем количестве узлов и более высоких деревьев будет некоторое перекрытие узлов из-за ограниченного пространства, но в этом случае все должно быть в порядке, поскольку функция должна работать только с двоичными деревьями поиска.
В моем распоряжении есть функция, которая берет [[bool]] и печатает строки, заменяя логические символы, но ... я понятия не имею, как это можно использовать в данном конкретном случае ... Любая помощь быть оцененным.