首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostOrder遍历Java

PostOrder遍历Java
EN

Stack Overflow用户
提问于 2015-11-04 05:14:42
回答 2查看 1.4K关注 0票数 0

在遍历post order之后,我试图返回树的字符串表示,但是它给了我工作。看起来很简单的代码,但我似乎不明白。调试也没有多大帮助。我不知道该看什么。这里出什么问题了?我知道在这个意义上使用字符串是不好的做法,但我只是把一些东西放在一起。我本可以使用字符串缓冲区或其他什么东西,但现在我很困惑为什么这不起作用,并想找出原因。

代码语言:javascript
复制
  public String postOrderTraversal(){
        String answer = "";
        return postOrderTraversal(root, answer);
    }

    private String postOrderTraversal(Node aux, String answer){
        if(aux == null){
            return "";
        }
        else{
            postOrderTraversal(aux.left, answer);
            postOrderTraversal(aux.right, answer);
            answer += aux.data;
        }

        return answer;

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-04 05:19:09

您不能添加子树的顺序遍历。你可以把它更正为

代码语言:javascript
复制
private String postOrderTraversal(Node aux) {
    if(aux == null) return "";
    return postOrderTraversal(aux.left) + postOrderTraversal(aux.right) + aux.data;
}
票数 0
EN

Stack Overflow用户

发布于 2015-11-04 05:36:38

字符串是不可变的对象。仅仅传递引用不会更新返回值。你应该试试StringBuilder。

代码语言:javascript
复制
public String postOrderTraversal(){
    StringBuilder answer  = new StringBuilder();
    postOrderTraversal(root, answer);
    return answer.toString();
}

private void postOrderTraversal(Node aux, StringBuilder answer){
    if(aux == null){
        return;
    }
    else{
        postOrderTraversal(aux.left, answer);
        postOrderTraversal(aux.right, answer);
        answer.append(aux.data);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33514179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档