算法思想
- 表达式二叉树的中序遍历即中缀表达式
- 除了根节点和叶结点,遍历到其他结点时在遍历其左子树前加上左括号,在遍历完右子树后加上右括号
算法实现
//中序遍历,deep从1开始,即根节点的深度为1
void midOrder(BTree T,int deep){
if(T == NULL) return;//空结点,直接返回
else if(T->left == NULL && T->right==NULL){//若为叶结点,直接输出(数字)
printf("%s",T->data);
}
else{
//若不为叶结点,也不为根结点,则遍历左子树前加上括号
if(deep>1) printf("(");
midOrder(T->left,deep+1);
printf("%s",T->data);//输出(操作符)
midOrder(T->right,deep+1);
//若不为叶结点,也不为根结点,则遍历右子树后加上括号
if(deep>1) printf(")");
}
}