很简单,采用递归的方式来计算表达式树(二叉树)。
什么是表达式树,请看例子:
下面给出从根节点开始,计算表达式树的值得算法:
//计算表达式树
public static double caculatePloenTree(treeNode root)
{
if(!(root.type.equals("+") || root.type.equals("-")||root.type.equals("*")||root.type.equals("-")))
return Double.parseDouble(root.type);
else if(root.type.equals("+"))
{
return caculatePloenTree(root.lnode) + caculatePloenTree(root.rnode);
}
else if(root.type.equals("-"))
{
return caculatePloenTree(root.lnode) - caculatePloenTree(root.rnode);
}
else if(root.type.equals("*"))
{
return caculatePloenTree(root.lnode) * caculatePloenTree(root.rnode);
}
else
{
return caculatePloenTree(root.lnode) / caculatePloenTree(root.rnode);
}
}