编辑 这已通过使用此线程中建议的 StringBuilder 解决。谢谢:D
你好,
我有一棵树,我试图按顺序返回内容的字符串。
我现在可以用这样的东西打印出树:
public void inOrder() {
if (left != null) left.inOrder();
System.out.print(content + " ");
if (right != null) right.inOrder();
}
但我想做的是返回字符串(而不是在递归时打印出每个节点的内容),但我不知道该怎么做。我尝试了下面代码的许多变体,但它只返回它在递归中找到的最后一个元素。
public String inOrder(String string) {
if (left != null) left.inOrder(string);
string += content;
if (right != null) right.inOrder(string);
return string;
}
最佳答案
字符串在 java 中是不可变的。您不是将新字符串连接到旧字符串,而是创建新字符串并使 string
变量指向它。结果是您有许多不相关的字符串和 string
变量在不同的时间点指向它们。
您需要将可变对象传递给您的函数,例如 StringBuilder
。该解决方案还有一个额外的优势,那就是效率更高,因为您避免了不必要的对象分配。
关于java - 返回树的中序字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5077216/