후속 순회 아이디어를 기반으로 왼쪽 및 오른쪽 하위 트리의 결과를 재귀적으로 계산하고 최종적으로 루트 노드의 연산자에 따라 결과를 계산합니다.
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(p->lchild); //递归计算左、右子树
val_r = Calculate(p->rchild);
switch(p->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;
}