java - 返回树的中序字符串

标签 java recursion tree inorder

编辑 这已通过使用此线程中建议的 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/

相关文章:

algorithm - 什么是父节点以及如何存储它?

javascript - 使用 CSS 获取 HTML DOM

gwt - 在 GWT 中构建树小部件

java - 将 JPanel 背景设置为透明

java - appium webdriver 在真实 IOS 设备上未检测到 Webview

java - android 图表引擎中曲线下的着色区域

Python递归函数从字典中获取数据

java - 为什么我不能在子类构造函数中添加额外的参数验证?

scala - 如何编写递归匿名函数?

recursion - F# 编译器可以优化这些相互递归的函数吗?