0

我有以下方法可以递归地执行三叉树的前序遍历,但很难以某种方式打印它。

    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

我想缩进树的每个级别,以便更容易可视化树的结构。请帮忙。

4

1 回答 1

1

添加一个参数来指定级别应该缩进多远。具有您想要缩进的确切字符数的字符串效果很好。当您进行递归调用时,缩进更深。

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);
}
于 2020-04-14T00:32:50.900 回答