表达式树通过二叉树来表示一个表达式。它的树叶是操作数,比如常数或变量,而其他的节点是操作符。通过递归的计算左子树和右子树所得到的值应用在根处的运算符操作中而算出表达式的值。
可以通过递归产生一个带括号的左表达式,然后打印出在根处的运算符,最后再递归的产生一个带扩号的有表达式而得到一个中缀表达式。这种一般的方法(左,节点,右)称为中序遍历。
递归打印出左子树、右子树,然后打印运算符。输出将是后缀表达式。这种表达式称为后序遍历。
先打印出运算符,然后递归的打印出右子树和左子树。这种遍历称为先序遍历。
===================================================================================
将后缀表达式转换成表达式树
一次一个的读入表达式。如果符号是操作数,那就建立一个单节点树并将一个指向他的指针推入栈中。如果符号是操作符,那么就从栈中弹出指向两棵树T1和T2的那两个指针并形成一棵新的树,该树的根就是操作符,他的左右儿子分别指向T2和T1。然后将指向这棵树的指针重新推入栈中。
可以通过递归产生一个带括号的左表达式,然后打印出在根处的运算符,最后再递归的产生一个带扩号的有表达式而得到一个中缀表达式。这种一般的方法(左,节点,右)称为中序遍历。
递归打印出左子树、右子树,然后打印运算符。输出将是后缀表达式。这种表达式称为后序遍历。
先打印出运算符,然后递归的打印出右子树和左子树。这种遍历称为先序遍历。
===================================================================================
将后缀表达式转换成表达式树
一次一个的读入表达式。如果符号是操作数,那就建立一个单节点树并将一个指向他的指针推入栈中。如果符号是操作符,那么就从栈中弹出指向两棵树T1和T2的那两个指针并形成一棵新的树,该树的根就是操作符,他的左右儿子分别指向T2和T1。然后将指向这棵树的指针重新推入栈中。