2016-10-07 4 views
2

Erwartet (A (D()()) (B (C()())()))toString Methode von Binary Tree mit Java

Got A(D()()) (B(C()())())

verlor ich die erste und die letzte Klammer.

private String toString(BinaryNode curr) { 

    String str = ""; 
    if(curr == null) { 
     return str; 
    } else{ 
    str += curr.value; 
    str += "(" + toString(curr.left) + ") (" + toString(curr.right) + ")"; 
    } 

    return str; 
} 

Und wenn ich meinen Code geändert, bekam ich (A((D()())) ((B((C()()))())))

private String toString(BinaryNode curr) { 

    String str = ""; 
    if(curr == null) { 
     return str; 
    } else{ 
    str += curr.value; 
    str += "(" + toString(curr.left) + ") (" + toString(curr.right) + ")"; 
    } 

    return "(" + str + ")"; 
} 

Antwort

0

Sie müssen verantwortlich, welcher Teil des Codes entscheiden, ist durch Klammern zu umgeben. Die, die bei der Rückkehr scheint die Arbeit zu tun:

private String toString(BinaryNode curr) { 

    String str = ""; 
    if(curr == null) { 
     return str; 
    } else{ 
     str += curr.value+" "; 
     str += toString(curr.left) + toString(curr.right); 
    } 

return "(" + str + ")"; 

}

+0

Vielen Dank! Ich sollte die Klammern außerhalb der Rekursion setzen. –