二元运算表达式树及其遍历的关系
可以用树表示一个二元的运算表达式,例如下面这棵树:
通过观察发现,所有的叶节点都是数据,所有的非叶节点存储的都是运算符。
通过不同的遍历方式对这颗树进行遍历,发现如下规律
受优先级的影响,中序遍历得到的中缀表达式并不是每次都正确的
解决这个问题的办法是:在输出左叶节点时加一个左括号,输出右叶结点时加一个右括号,这样就不会受优先级的影响了
if(T->Left==NULL&&T->Right==NULL)//判断是否是叶结点
{
if(T->Left)//如果是左结点的话,提前输出一个左括号
printf("(%d",T->Left);
else if(T->Right)//如果是右结点的话,在输出的数据后加一个右括号
printf("%d)",T->Right);
}