【问题标题】:How do I trace the progress of this tree code?如何跟踪此树代码的进度?
【发布时间】:2012-06-20 22:15:19
【问题描述】:
  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,但我迷失了方向。

【问题讨论】:

  • 这是我见过的最糟糕的标题。
  • 跟踪代码最简单的方法是使用断点。你的 IDE 应该支持它们。
  • 这棵树在我看来相当晦涩难懂。能否请您添加边缘?
  • 我不认为你的踪迹是正确的;在没有子节点的节点上调用该方法应该打印该节点的内容 3 次。
  • @Yob:类似于“帮助编码语言”。

标签: java tree binary-search


【解决方案1】:

没有跟踪,查看给定树应该打印什么相对简单。该方法的结构意味着一个字符串将如下所示:

<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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多