Как нарисовать дерево имея его ребра?
используйте Graphviz

Предлагаю рисовать рекурсивно. Нарисовать все поддеревья (обведены синим), потом корень (желтым). Каждое поддерево рисуем по тому же принципу. Если в поддереве 1 вершина -- просто рисуем ее.
Чтобы понять с каким отступом рисовать поддеревья, так же рекурсивно считаем ширину.