第章 树和二叉树答案 (五)
五.算法设计题
.[题目分析]以二叉树表示算术表达式根结点用于存储运算符若能先分别求出左子树和右子树表示的子表达式的值最后就可以根据根结点的运算符的要求计算出表达式的最后结果
typedef struct node
{ElemType data; float val;
char optr; //只取+ */
struct node *lchild*rchild }BiNode*BiTree;
float PostEval(BiTree bt) // 以后序遍历算法求以二叉树表示的算术表达式的值
{float lvrv;
if(bt!=null)
{lv=PostEval(bt>lchild); // 求左子树表示的子表达式的值
rv=PostEval(bt>rchild); // 求右子树表示的子表达式的值
switch(bt>optr)
{case +: value=lv+rv; break;
case : value=lvrv;break;
case *: value=lv*rv;break;
case /: value=lv/rv;
} } return(value); }
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []