使用java中的递归返回树的post order表达式的问题

时间:2017-04-21 13:39:19

标签: 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;
}

1 个答案:

答案 0 :(得分:2)

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

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,你要返回的值。这可能就是为什么你的方法在没有左右子树的情况下返回根值的原因。