构造表达式树

一个表达式的典型形式(中缀表达式)为

12 + 4 * 5 - ( 4 / 3 + 123 ) 

先将其转换为后缀表达式(可用双栈法)

[12, 4, 5, *, +, 4, 3, /, 123, +, -]

以下构造操作均需将原始数据包装为二叉树结点Node。

 表达式树的叶子结点是操作数,其余结点为操作符

构造时,也需要用到栈来暂存那些部分构造好的子树

首先操作数将直接推入栈中

遇到操作符,便取出栈中的两个结点(可能是操作数,也可能是一个子树),分别作为左右子树挂在操作符结点上,然后将这个新的结点推入栈中。

到最后栈中应该只有一个结点,即为表达式树的根结点。

结果如下

 

posted @ 2022-08-17 20:35  向金华  阅读(209)  评论(0)    收藏  举报