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)
字符串在java中是不可变的.您没有将新String连接到旧String,您正在创建新String并使string变量指向它.结果是你string在不同的时间点上有许多不相关的字符串和变量点.
您需要将可变对象传递给您的函数,例如StringBuilder.此解决方案具有额外的优势,因为它可以避免不必要的对象分配,因此效率更高.