1. 程式人生 > 其它 >設一個僅包含運算二元算術表示式,以連結串列二叉樹儲存,寫出計算該表示式的演算法

設一個僅包含運算二元算術表示式,以連結串列二叉樹儲存,寫出計算該表示式的演算法

技術標籤:資料結構C演算法

基於後續遍歷思想,遞迴計算左右子樹的結果最後根據根節點的操作符計算結果

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;
}