文章目录
一、题目:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a62871bab4d4a961cb5c155f255d9473.png)
二、算法
先求A的值,再求B的值,最后A*B,因此采用后序遍历求此表达式的值。
代码如下(示例):
int op(int A, int B, char C){
if (C = '+')
return A + B;
if (C = '-')
return A - B;
if (C = '*')
return A * B;
if (C = '/')
return A / B;
}
int comp(BTNode *p){
int A, B;//A用来存放左子树的值,B用来存放右子树的值
if (p != NULL){//p所指结点不为空时
if (p->lchild != NULL&&p->rchild != NULL){//p的左右孩子皆不为空时,即p->data为运算符时
A = comp(p->lchild);
B = comp(p->rchild);
return op(A, B, p->data);
}
else//p->data为char类型的数字时
return p->data - '0';
}
else//p所指结点为空时
return 0;
}