我正在處理的這個項目要求表達式樹由一個數字操作數和操作符的字符串構成,這兩個操作數和操作符都表示爲char類型。我做了實踐,到那時爲止的程序工作正常。我能夠以正確的方式打印inorder,preorder和postorder遍歷。評估一個表達式樹
最後一部分需要消除表達式樹。參數是表達式樹「t」及其根「根」。表達式樹是((3 + 2)+(6 + 2)),它等於13.相反,我得到11作爲答案。很顯然,我在這裏錯過了一些東西,而且我已經盡力避免將我的頭撞向桌子。
如果有人能指出我正確的方向,我將不勝感激。
(請注意,在這一點上我只是想試探此外,將在其他運營商的加入,當我得到這個方法的工作。)
public int evalExpression(LinkedBinaryTree t, BTNode root) {
if(t.isInternal(root)) {
int x = 0, y = 0, value = 0;
char operator = root.element();
if(root.getLeft() != null)
x = evalExpression(t, t.left(root));
if(root.getRight() != null)
y = evalExpression(t, t.right(root));
if(operator == '+') {
value = value + Character.getNumericValue(x) + Character.getNumericValue(y);
}
return value;
} else {
return root.element();
}
}
我想出了問題所在。 else塊中的值應該返回Character.getNumericValue(root.element())。一切正常,現在應該如此。 – Phronima 2010-04-25 06:05:26