假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树BT中,写出计算该算术表达式值的算法。

admin2019-01-16  23

问题 假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树BT中,写出计算该算术表达式值的算法。

选项

答案以二叉树表示算术表达式,根结点用于存储运算符。若能先分别求出左子树和右子树表示的子表达式的值,最后就可以根据根结点的运算符的要求,计算出表达式的最后结果。 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){ Iv=PostEval(bt->lchild); //求左子树表示的子表达式的值 nr=PostEval(bt->rchild); //求右子树表示的子表达式的值 switch(bt一>optr){ case’+’:value=lv+rv:break; case’一’:value=lv-rv;break; case’*’:value=Iv*rv;break; case’/’:value=lv/nr: } } return(value): }

解析
转载请注明原文地址:https://jikaoti.com/ti/O3fjFFFM
0

最新回复(0)