Вашему дереву потребуется удвоенное расстояние для каждого слоя:
a
/ \
/ \
/ \
/ \
b c
/ \ / \
/ \ / \
d e f g
/ \ / \ / \ / \
h i j k l m n o
Вы можете сохранить свое дерево в виде массива, по одному массиву на каждую глубину:
[[a],[b,c],[d,e,f,g],[h,i,j,k,l,m,n,o]]
Есливаше дерево не заполнено, вам нужно включить пустые значения в этот массив:
a
/ \
/ \
/ \
/ \
b c
/ \ / \
/ \ / \
d e f g
/ \ \ / \ \
h i k l m o
[[a],[b,c],[d,e,f,g],[h,i, ,k,l,m, ,o]]
Затем вы можете выполнить итерацию по массиву, чтобы напечатать ваше дерево, печатая пробелы перед первым элементом и между элементами в зависимости отглубина и печать линий в зависимости от того, заполнены ли соответствующие элементы в массиве для следующего слоя или нет.Если ваши значения могут быть длиной более одного символа, вам нужно найти самое длинное значение при создании представления массива и соответственно умножить всю ширину и количество строк.