算法思想
- 表达式二叉树的中序遍历即中缀表达式
- 除了根节点和叶结点,遍历到其他结点时在遍历其左子树前加上左括号,在遍历完右子树后加上右括号
算法实现
//中序遍历,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(")"); }
}