设一个仅包含运算二元算术表达式,以链表二叉树存储,写出计算该表达式的算法
作者:互联网
基于后续遍历思想,递归计算左右子树的结果最后根据根节点的操作符计算结果
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}*BiTree;
//对二叉链表树中的结点计算
ElemType Calculate(BiTree T){
BiTNode *p = T; //创建指针指向根结点
ElemType val_l, val_r;
if(T){
val_l = Calculate(T->lchild); //递归计算左、右子树
val_r = Calculate(T->rchild);
switch(T->optr){ //根据根节点的字符将左右子结果计算为当前这一层子树的结果
case'+':
value = val_l + val_r;
break;
case'-':
value = val_l - val_r;
break;
case'*':
value = val_l * val_r;
break;
case'/':
value = val_l / val_r;
break;
default:
break;
}
}
return value;
}
标签:case,break,Calculate,val,value,链表,二叉树,BiTNode,表达式 来源: https://blog.csdn.net/qq_37504771/article/details/111999774