-6
  public static <AnyType> void mysteryPrint(BinaryNode<AnyType> t) {
      if( t! = null) {
          System.out.println(t.getElement() );
          mysteryPrint(t.getLeft() );
          System.out.println(t.getElement() );
          mysteryPrint(t.getRight() );
          System.out.println(t.getElement() );
      }
  }

               A
       B               C
           D        E

私は上のツリーを作成しましたが、このコードをトレースして出力を見つけるのが最も簡単なのは何だろうと思っていました。

私はこれまでにABBDDBを取得していて、追跡できなくなりました。

4

1 に答える 1

2

トレースしなくても、特定のツリーが何を出力するかを確認するのは比較的簡単です。メソッドの構造は、文字列が次のようになることを意味します。

<content><left sub-tree><content><right sub-tree><content>

そのため、左と右のサブツリーをそのパターンに置き換え (存在しないサブツリーには空の文字列を使用)、文字列を取得するだけです。

サンプル ツリーでは、次のようになります ([ と ] を使用して置換を示します)。

A<left sub-tree>A<right sub-tree>A
A[B<left sub-tree>B<right sub-tree>B]A[C<left sub-tree>C<right sub-tree>C]A
A[B[]B[D<left sub-tree>D<right sub-tree>D]B]A[C[E<left sub-tree>E<right sub-tree>E]C[]C]A
A[B[]B[D[]D[]D]B]A[C[E[]E[]E]C[]C]A

したがって、メソッドは ABBDDDBACEEECCA を出力します

于 2012-06-20T22:31:20.230 に答える