表示式樹括號 C語言(C )解法

2021-10-10 23:28:31 字數 1176 閱讀 2262

請編寫程式將表示式樹按中綴表示式輸出,並填加必要的括號,要求括號不能冗餘,即保證正確運算次序所需的最少括號。如a * (b + c)和a + (b - c)中的括號是必要的,而a + (b * c)的括號則是冗餘的。假定表示式樹中的運算均為二元運算,只涉及加、減、乘、除運算。

輸入為一行字串,表示帶空指標資訊的表示式樹先根序列,空指標資訊用#表示,運算元為a-z的小寫字母,運算子為+、-、*、/。

輸出為一行字串,表示填加必要括號後的中綴表示式。

輸入樣例1:

輸出樣例1:

輸入樣例2:

輸出樣例2:

本題重在思路,只要想好在什麼地方加括號即可

#include #include //節點結構體

typedef struct node

tree;

//先根建樹,空節點存'#'

tree *creat_tree()

} else

return temp;

}/*補括號函式,主要思想為若節點'*'(或'/')的子節點為'+'(或'-')時,加括號將以'+'(或'-')節點為根的子樹括起來*/

void bukuohao(struct node *p)

p=p->left;

}p=q->left;

for(;;)

p=p->right;}}

//判斷'*'(或'/')的右子樹

else if(p->right->data=='+'||p->right->data=='-')

p=p->right;

}p=q->right;

for(;;)

p=p->left;

}}p=q;

if(p->right->data!='#')

bukuohao(p->right);

}//中序遍歷二叉樹並輸出個節點的值

void zhongxu(struct node *p)

}//主函式

C 表示式樹

在使用 ef 開中我們經常使用 xx.where p p.name 張三 查詢資料,之把能這樣是因為 ef 框架會把這些c 轉成sql語句,其中主要用到的就是表示式樹,今天就來學習一下表示式樹。func func a,b a b expressionint,int,int expression a,...

C 表示式樹Expression

表示式相加 常量表示式 expression firstarg expression.constant 2 expression secondarg expression.constant 4 相加 expression addexpression expression.add firstarg,s...

C語言 逗號表示式

c語言提供一種特殊的運算子 逗號運算子。用它將兩個表示式連線起來。如 3 5,6 8 稱為逗號表示式,又稱為 順序求值運算子 逗號表示式的一般形式為 表示式1,表示式2 逗號表示式的求解過程是 先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式 3 5,6 8 ...