【发布时间】:2015-05-10 15:58:49
【问题描述】:
我已经看到了有关如何遍历二叉树并找到所有节点之和的方法,但我正在评估计算器的表达式输入。节点根据操作顺序以适当的顺序排列,节点为operators 或operands。我认为recursion 比迭代慢,所以我想弄清楚如何遍历二叉树并找到没有recursion 输入的表达式的结果。
树的一个例子:
+
* /
3 4 4 2
目前为止我使用的递归方法(我使用了一个枚举作为运算符):
public static float evaluate(BETNode root)
{
if (root == null)
{
throw new IllegalArgumentException("Error: Root is null!");
}
if (root.getType() == BETNodeType.OPERAND)
{
return root.getOperand();
}
float leftValue = evaluate(root.getLeft());
float rightValue = evaluate(root.getRight());
switch (root.getOperator())
{
case '+':
return leftValue + rightValue;
case '-':
return leftValue - rightValue;
case '*':
return leftValue * rightValue;
case '/':
return leftValue/rightValue;
}
throw new IllegalArgumentException("Error.");
}
【问题讨论】:
标签: java algorithm recursion binary-tree