Как распечатать тройное дерево? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть следующий метод для рекурсивного выполнения обхода тройного дерева по предварительному заказу, но возникают трудности при печати его определенным образом.

    public void preOrder(Node node) {
    if (node == null) {
        return;
    }
    System.out.print(" " + node.data);
    preOrder(node.left);
    preOrder(node.middle);
    preOrder(node.right);
}
Output: Root LeftChild LeftChildA LeftChildB LeftChildC MiddleChild RightChild
Desired Output:
Root
  Left
     LeftChildA //Left child of left 
     LeftChildB //Middle child of left
     LeftChildC //Right child of left
  Middle
  Right

Я хочу сделать отступ для каждого уровня дерево, чтобы упростить визуализацию структуры дерева. Пожалуйста, помогите.

1 Ответ

1 голос
/ 14 апреля 2020

Добавить параметр для определения уровня отступа. Строка, которая имеет точное количество символов, с помощью которых вы хотите сделать отступ, прекрасно работает. Когда вы делаете рекурсивные вызовы, делайте отступ глубже.

public void preOrder(Node node) {
    String initialIndent = ""; // Root level has no indentation
    preOrderHelper(initialIndent, node);
}

public void preOrderHelper(String indent, Node node) {
    if (node == null) {
        return;
    }
    System.out.println(indent + node.data);

    String newIndent = indent + "   ";
    preOrderHelper(newIndent, node.left);
    preOrderHelper(newIndent, node.middle);
    preOrderHelper(newIndent, node.right);
}
...