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