2014-11-06 52 views
0

我应该从inorder方法获取值,然后将它们存储在文本文件中。我如何在下面的代码中实现它?如果我使用返回值返回到另一个写入方法来存储在文本文件而不是System.out.println中,它将不会转到下一个root.getRight()语句。任何帮助?来自二进制树方法的返回值

private String inorder(TreeNode root) { 

     if(root.getLeft()!=null){ 
      inorder(root.getLeft()); 
     } 

     stringConcatenation += root.getData()); 

     if(root.getRight()!=null){ 
      inorder(root.getRight()); 
     } 

     return stringConcatenation; 
    } // end of inorder() 
+0

如果树中有多个元素,这将永远循环。它将遍历到最左边,将其打印到System,然后向右移动一个,然后递归地再次向左移动。它将继续打印第一个元素。 – CharlieS 2014-11-06 00:17:34

+0

@CharlieS:不,它不会;当它在递归调用中向左(或向右)移动时,它会沿着树的更远。 – 2014-11-06 00:25:10

+0

它一直递归到null,然后打印最左边元素中的内容。然后往右走,重新进入。再入让它离开。它再次打印第一个元素,然后向右移动。然后重新进入并离开。打印第一个元素,然后向右转并重新进入。无限无尽 – CharlieS 2014-11-06 00:35:41

回答

1

您可以将每次递归调用的结果与根值连接起来,以获得一个字符串与整个列表,然后可以返回。

+0

这可能是一种可行的方法。 – 2014-11-06 00:20:50

+0

我刚发布了更改。你的意思是这样吗?@Scott – 2014-11-06 00:21:51

+0

你需要做什么来回应你的递归调用。你不能在其声明中添加一个变量。 – 2014-11-06 00:23:14