返回树的inorder字符串

gue*_*ork 1 java tree recursion inorder

编辑这已通过使用StringBuilder解决,如此线程中所建议的那样.谢谢你:D

你好,

我有一棵树,我正在尝试按顺序返回内容的字符串.

我现在可以用这样的东西打印出树:

    public void inOrder() {
        if (left != null) left.inOrder();
        System.out.print(content + " ");
        if (right != null) right.inOrder();
    }
Run Code Online (Sandbox Code Playgroud)

但我想要做的就是返回字符串(而不是打印出每个节点的内容,同时递归),我不能工作了如何做到这一点.我尝试了下面代码的许多变体,但它只返回它在递归中找到的最后一个元素.

 public String inOrder(String string) {
        if (left != null) left.inOrder(string);
        string += content;
        if (right != null) right.inOrder(string);

        return string;
    }
Run Code Online (Sandbox Code Playgroud)

Sla*_*ast 5

字符串在java中是不可变的.您没有将新String连接到旧String,您正在创建新String并使string变量指向它.结果是你string在不同的时间点上有许多不相关的字符串和变量点.

您需要将可变对象传递给您的函数,例如StringBuilder.此解决方案具有额外的优势,因为它可以避免不必要的对象分配,因此效率更高.