思想:表达式树中序遍历加上必要括号即为中缀表达式。表达式最外层(对应根节点)即操作数(即为叶节点)不需要添加括号
代码实现:
typedef struct Node{ char data[10]; struct node *left,*right; }BTree; void BtreetToE(BTree *root) { BtreeToExp(root,1); } void BtreeToExp(BTree *root,int deep) { if(root==Null)return;//空节点返回 else if(root->left==NULL&&root->right==Null) printf("%s",root->data);//输出操作数,不加括号 else{ if(deep>1 printf("("));//若有子表达式加一层括号 BtreeToExp(root->left,deep+1); printf("%s",root->data); BtreeToExp(root->right,deep+1); if(deep>1)printf(")");//若有子表达式加一层括号 } }