0

後続の各レベルのインデント (3 つのスペース) を使用してバイナリ ツリーを事前注文するにはどうすればよいでしょうか。この時点で、ヘルパー メソッドを使用してツリーを再帰的に出力していますが、インデントのコーディング方法がわかりません。これは私がこれまでに持っているものです:

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

私がすぐに考えたのは、カウンターを入れて、メソッドが再帰的に呼び出されるたびにインクリメントし、インクリメントごとに 3 つのスペースをインデントすることでしたが、これが最善の方法であるかどうかはわかりません。

4

1 に答える 1

1

あなたは正しい方向に向かっていました。一般的な疑似コードを次に示します。

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 + "  ")
}
于 2012-11-16T21:30:39.173 に答える