Java 从顺序二叉树方法返回值

Java 从顺序二叉树方法返回值,java,binary-tree,bufferedreader,inorder,Java,Binary Tree,Bufferedreader,Inorder,我应该从inorder方法中获取值,然后将它们存储在文本文件中。如何在下面的代码中实现它?如果我使用return将值返回到另一个write方法以存储在文本文件中,而不是System.out.println,则它不会转到下一个root.getRight()语句。有什么帮助吗 private String inorder(TreeNode root) { if(root.getLeft()!=null){ inorder(root.getLeft());

我应该从inorder方法中获取值,然后将它们存储在文本文件中。如何在下面的代码中实现它?如果我使用return将值返回到另一个write方法以存储在文本文件中,而不是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()

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

如果树中有多个元素,则此操作将永远循环。它将遍历到最左边,将其打印到系统中,然后向右移动,然后递归地再次向左移动。它只会继续打印第一个元素。@CharlieS:不,不会;当它在递归调用中向左(或向右)移动时,它在树的下方移动得更远。它一直向左递归到null,然后打印最左边元素中的内容。然后向右转,再返回。再入将它带到左边。它再次打印第一个元素,然后右转。然后重新进入并向左走。打印第一个元素,然后右转并重新输入。无限期“然后重新输入并向左”:这将位于与打印的节点不同的节点。使用链表存储数据如何?这可能是一种可行的方法。我刚刚发布了更改。你的意思是这样吗?@ScottYou需要对递归调用返回的内容做一些处理。并且不能在变量声明中添加变量;只需对递归调用执行此操作。哦:您还需要声明/初始化
stringConcatenation
并返回它。刚刚发布了您所说的,现在可以了吗?