中缀表达式构建二叉树

在上篇文章栈结构与四则运算中提到了通过算术表达式构造二叉树,比如
9+(3-1)\times3+10\div2
是一个标准的算术表达式,也叫中缀表达式。在通过中缀表达式构造二叉树的过程中,计算数要作为叶子节点,运算符作为中间节点,考虑算术优先级。因为正常单从一个中缀表达式是无法获得唯一的一个二叉树结构的。总结来说,中缀表达式构造二叉树有以下几个步骤和要点:

  1. 计算数作为叶子节点,运算符作为中间节点。
  2. 对算式按照优先级和计算顺序分割,计算数为叶子节点,运算符为中间节点,直到算式对应到二叉树中。
  3. 分析过程中,可以用括号辅助分割表达式,依次分析得到左右树节点(算式中一般常见括号,因此用竖线分隔更好些)。

如下对中缀表达式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,整个转换完成。

最终的树结构如图


表达式二叉树
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容