遍历方案
从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任意给定结点上,可以按某种次序执行三个操作:
(1)访问结点本身(N),
(2)遍历该结点的左子树(L),
(3)遍历该结点的右子树(R)。
2.三种遍历的命名
根据访问结点操作发生位置命名:
① NLR:前序遍历
——访问结点的操作发生在遍历其左右子树之前。
② LNR:中序遍历
——访问结点的操作发生在遍历其左右子树之中(间)。
③ LRN:
——访问结点的操作发生在遍历其左右子树之后。
如果给出中缀表达式是(A+B)*C-D/(E+F)
请给出前缀和后缀表达式。。。
1. 构造二叉树
1. 按照上面的树的遍历
即: 前序遍历对应前缀表达式,后序遍历对应后缀表达式
介绍一种简单的方法就是把运算式按照运算的顺序,加入括号();
如(A+B)*C-D/(E+F) à (((A+B)*C)-(D/(E+F)))
前缀表达式就是把运算符都运动到括号的左边,后续就是把运算符都移动到括号的右边.去掉括号即可
如:前-*+ABC/D+EF 后AB+C*DEF+/-