java - 在java中使用递归返回树的后序表达式的问题

标签 java recursion binary-tree tree-traversal

我遇到一个问题,我的方法仅以字符串形式返回根节点。如果我在 helperPostOrder 方法中打印节点,它会正确打印邮政订单。

public String postorder()
{
    return helperPostOrder(root, ""); // method calling
}

private String helperPostOrder(Node root , String s){
    if(root != null)
    {
        if(hasLeft(root)){
            helperPostOrder(root.left, s);
        }

        if(hasRight(root)){
            helperPostOrder(root.right, s);
        }
        s =  s + " " + root;
    }   

    return s;
}

最佳答案

你能试试吗?我这里没有编译器,但我认为它是正确的:

public String postorder()
{
    return helperPostOrder(root, ""); // method calling
}

private String helperPostOrder(Node root , String s){
    if(root != null)
    {
        if(hasLeft(root)){
            s = s + " " + helperPostOrder(root.left, s);
        }

        if(hasRight(root)){
            s = s + " " + helperPostOrder(root.right, s);
        }
    }   

    return s;
}

由 @Ole V.V. 添加: 你的递归调用 helperPostOrder(root.left, s);不是修改 s,即您要返回的值。这可能就是为什么您的方法返回根值而没有左子树和右子树的原因。

关于java - 在java中使用递归返回树的后序表达式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544251/

相关文章:

list - 在自己的行上打印列表的所有项目

language-agnostic - 如何处理最大递归深度?

c# - 在 n 树实现方面需要帮助

algorithm - 是否可以将元素插入复杂度低于 O(n) 最坏情况的 BST?

java - 如何从字符串填充二叉树,java

java - 二叉树后缀计算器

javascript - 将 javascript 代码转换为 android 代码 - 如何在 POST 请求中添加引荐来源网址?

java - 在黑莓电子邮件应用程序中打开特定电子邮件

java - 存储游戏数据的最佳方式? (图像、 map 等)

java - 如何在java应用程序中使用密码保护sqlite db