给出后缀表达式,建立表达式树。后缀表达式中只有操作数和操作符,我们知道,
操作数一定是表达式树的
叶子结点,
操作符一定是
父结点。
这个过程与计算后缀表达式的值的过程极为类似。
操作数,作为叶子结点,可以看作是左右儿子都为NULL的父结点,因此也可以看作一棵二叉树。
因此算法是,建立一个二叉树栈,扫描后缀表达式:
1.若遇到操作数,把其作为左右儿子都为NULL的二叉树,根结点入栈。
2.若遇到操作符,弹出两个栈中结点,作为此操作符的左、右儿子(先弹出的是右儿子,后弹出的是左儿子),然后把操作符作为根结点入栈。
最后栈中剩余的唯一结点就是整个表达式树的根结点,表达式树构建完毕。
举个例子,若后缀表达式是ab+cde+**,构建表达式树的过程如下图: