在上篇文章栈结构与四则运算中提到了通过算术表达式构造二叉树,比如
是一个标准的算术表达式,也叫中缀表达式。在通过中缀表达式构造二叉树的过程中,计算数要作为叶子节点,运算符作为中间节点,考虑算术优先级。因为正常单从一个中缀表达式是无法获得唯一的一个二叉树结构的。总结来说,中缀表达式构造二叉树有以下几个步骤和要点:
- 计算数作为叶子节点,运算符作为中间节点。
- 对算式按照优先级和计算顺序分割,计算数为叶子节点,运算符为中间节点,直到算式对应到二叉树中。
- 分析过程中,可以用括号辅助分割表达式,依次分析得到左右树节点。
如下对中缀表达式9+(3-1)*3+10/2
构造二叉树过程:
根据优先级,分为三个部分9
, +
, (3-1)*3+10/2
,计算数9为左叶子,运算符+为中间节点;
继续分割(3-1)*3+10/2
,也是三部分(3-1)*3
,+
,10/2
,+为根节点,左子树为(3-1)*3
,右子树为10/2
继续,先拆分左侧(3-1)*3
,三部分3-1
,*
,3
,* 中间节点,3右叶子,继续可以拆分3-1
;
拆分右侧,对于10/2
,拆分为10
,/
,2
,整个转换完成。
最终的树结构如图
表达式二叉树
网友评论