如何跟踪此树代码的进度?

时间:2012-06-20 22:15:19

标签: java tree binary-search

  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,但我失去了轨道。

1 个答案:

答案 0 :(得分: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