Java 带缩进的预排序打印二叉树

Java 带缩进的预排序打印二叉树,java,binary-tree,Java,Binary Tree,如何进行预订单打印一个二叉树,每个后续级别有一个缩进(3个空格)。此时,我正在使用helper方法递归地打印出树,但我不确定如何对缩进进行编码。 这就是我到目前为止所做的: public void print() { printPreorder(root); System.out.println(); } private void printPreorder(BinaryTreenode<E> node) { System.out.println

如何进行预订单打印一个二叉树,每个后续级别有一个缩进(3个空格)。此时,我正在使用helper方法递归地打印出树,但我不确定如何对缩进进行编码。 这就是我到目前为止所做的:

public void print() {
      printPreorder(root);
      System.out.println();
}

private void printPreorder(BinaryTreenode<E> node) {
      System.out.println(node.getData() + " ");
      if (node.getLeft() != null) {
            printPreorder(node.getRight());
      }
      if (node.getRight() != null) {
            printPreorder(node.getRight());
      }
}
public void print(){
打印预订单(根);
System.out.println();
}
私有void printproorder(二进制树节点){
System.out.println(node.getData()+);
if(node.getLeft()!=null){
printPreorder(node.getRight());
}
if(node.getRight()!=null){
printPreorder(node.getRight());
}
}

我当时的想法是在每次递归调用该方法时放入一个计数器并使其递增,然后为每次递增缩进三个空格,但我不确定这是否是最好的方法。

您的方向是正确的。下面是一些通用伪代码:

void print(node) {
  print(node, "")
}

private void print(node, indent) {
  if(node is null) return
  output(indent + node.data)
  print(node.left, indent + "  ")
  print(node.right, indent + "  ")
}

第一件事。检查您的第一个递归调用。你调用了错误的分支。Oops/Edit:我意识到我使用了
print
作为
System.out.println
的方法名和别名,所以我改为
output
。谢谢!这帮了大忙!伟大的请考虑将我的答案标记为接受,如果这有助于你解决问题!