在 算法设计手册 中有两个相关的练习。
基本上,我知道如何解决第一个练习,但我不知道如何使用第一个练习的解决方案作为提示来解决第二个练习。
算术表达式 树 练习
好的,这不难。我的解决方案是这样的:
public float evaluate() {
return evaluate(root);
}
private float evaluate(Node_EX _node) {
if (_node.left == null || _node.right == null)
return Float.parseFloat(_node.key);
String op = _node.key;
if (op == "+") {
return evaluate(_node.left) + evaluate(_node.right);
} else if (op == "-") {
return evaluate(_node.left) - evaluate(_node.right);
} else if (op == "*") {
return evaluate(_node.left) * evaluate(_node.right);
} else {
return evaluate(_node.left) / evaluate(_node.right);
}
}
我只是使用递归的方式解决表达式树,得到结果。