二元运算表达式树及其遍历的关系

可以用树表示一个二元的运算表达式,例如下面这棵树:
二元运算表达式树及其遍历的关系

通过观察发现,所有的叶节点都是数据,所有的非叶节点存储的都是运算符


通过不同的遍历方式对这颗树进行遍历,发现如下规律
二元运算表达式树及其遍历的关系
受优先级的影响,中序遍历得到的中缀表达式并不是每次都正确的

解决这个问题的办法是:在输出左叶节点时加一个左括号,输出右叶结点时加一个右括号,这样就不会受优先级的影响了


if(T->Left==NULL&&T->Right==NULL)//判断是否是叶结点
{
	if(T->Left)//如果是左结点的话,提前输出一个左括号 
	printf("(%d",T->Left);
	else if(T->Right)//如果是右结点的话,在输出的数据后加一个右括号 
	printf("%d)",T->Right);
 }