我有一個函數接收一個二進制表達式樹,並返回一個字符串與按順序的表達式。唯一的「問題」是由此產生的表達式有太多括號,例如:該函數返回(a +(b * c)),但它可以被簡化爲a + b * c。
它是用二元運算符+, - ,*,/和一元運算符_(負)定義的。
我真正想知道的是,如果我可以修改已有的函數以有效地減少括號的數目,或創建另一個使用按序表達式的字符串操作的函數。
的功能如下:減少二進制表達式樹的括號數
private static String infijo(ArbolB t){
String s = "";
if (t != null) {
String info = String.valueOf(t.info);
if ("+-*/".contains(info)) s += "(";
if ("_".contains(info)) s += "-(";
s += infijo(t.left) + (info.equals("_") ? "" : info) + infijo(t.right);
if ("+-*/_".contains(String.valueOf(t.info))) s += ")";
}
return s;
}
凡ArbolB是定義一個二叉樹:
public class ArbolB {
ArbolB right;
ArbolB left;
Object info;
public ArbolB(Object info, ArbolB right, ArbolB left){
this.info = info;
this.right = right;
this.left = left;
}
}