Предположение: вы хотите, чтобы каждый узел отображался так, чтобы он находился по центру над его дочерними узлами.
Для этого вычислите ширину каждого узла, которую я определяю как количество горизонтального пространства, необходимого для отображения всего поддерева этого узла, чтобы оно не перекрывалось с поддеревьями его левого или правого братьев и сестер.
Это приводит к:
width = 1 + sum(widths of children's nodes)
Итак, сделайте обход в глубину по дереву, чтобы вычислить ширину каждого узла. Для отображения выполните обход в ширину, чтобы нарисовать уровень дерева по уровню.
Это грубая идея, как это сделать. Возможно, вы захотите настроить вычисление ширины в зависимости от того, как вы хотите отобразить дерево.