我遇到的问题是我的方法只返回根节点作为字符串。如果我在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;
}
答案 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,你要返回的值。这可能就是为什么你的方法在没有左右子树的情况下返回根值的原因。