【正确答案】正确答案:以二叉树表示算术表达式,根结点用于存储运算符。若能先分别求出左子树和右子树表示的子表达式的值,最后就可以根据根结点的运算符的要求,计算出表达式的最后结果。 typedef struct node{ ElemType data; float val; char optr; //只取"+","一",‘*’,"/" struct node *lchild,*rchild; }BiNode,*BiTree; float PostEval(BiTree bt){ //以后序遍历算法求以二叉树表示的算术表达式的值 float lv,rv; if(bt!=null){ lv=PostEval(bt一>lchild); //求左子树表示的子表达式的值 rv=PostEval(bt一>rchild); //求右子树表示的子表达式的值 switch(bt->optr){ case’+’:value=lv+rv;break; case’一’:value=lv—rv;break; case’*。:value=lv水n,:break; case "/":value=lv/rv: } } return(value); }
【答案解析】