設一個僅包含運算二元算術表示式,以連結串列二叉樹儲存,寫出計算該表示式的演算法
阿新 • • 發佈:2020-12-31
基於後續遍歷思想,遞迴計算左右子樹的結果最後根據根節點的操作符計算結果
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; }