java - 如何打印出三叉树?

标签 java ternary-tree

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

    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

我想缩进树的每一层,以便更容易地可视化树的结构。 请帮忙。

最佳答案

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

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);
}

关于java - 如何打印出三叉树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61198806/

相关文章:

java - 将时间段分割为每小时间隔

java - 为什么 Java HashMap 变慢了?

algorithm - 平衡三元搜索树

Haskell:在三叉树中找到一个值并且树没有排序

java - 使用 Lambda 在 Java 中的对象列表中填充属性

java - 在 Netty 中解析具有返回值的 ChannelPromise?

java - 保留 Guava SetMultimap 中的插入顺序

go - 如何在 Go 中执行三叉树的深拷贝?

c++ - 三元树报错

python - 使用常数空间迭代所有互质对?