[二叉树] 表达式树

将中缀表达式转换成表达式树

最快捷的方法是先找到表达式树的根元素, 以下面的这个中缀表达式为例

a + b * c - ( d + e / f * ( g + h ) )

为了找到表达式树的根元素, 首先把表达式的所有运算都加上括号, 如下

( a + ( b * c ) ) - ( d + ( ( e / f ) * ( g + h ) ) ) 

括号外的 - 优先级最低, 作为表达式树的根节点, 这样就可以以根节点开始, 画出整个表达式树了

还是上面的例子, - 为根节点, 那么左子树的表达式就是:

a + ( b * c )

再次选择括号外优先级最低的运算符作为子树的根, 因此左子树的根就是 +

依次类推, 往下面递归, 就可以很容易的画出整个表达式树了

表达式树

转化为前缀表达式

画出表达式树之后, 只需要对这个树进行先根遍历就可以得到对应的前缀表达式

转化为后缀表达式

画出表达式树之后, 只需要对这个树进行后根遍历就可以得到对应的后缀表达式

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

相关阅读更多精彩内容

  • 基于树实现的数据结构,具有两个核心特征: 逻辑结构:数据元素之间具有层次关系; 数据运算:操作方法具有Log级的平...
    yhthu阅读 4,493评论 1 5
  • 一直以来,我都很少使用也避免使用到树和图,总觉得它们神秘而又复杂,但是树在一些运算和查找中也不可避免的要使用到,那...
    24K男阅读 6,879评论 5 14
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,405评论 0 12
  • 栈的规则 先进后出。如:依次入栈顺序为:A,B,C,D;怎出栈顺序为:D,C,B,A . 二叉树和表达式 表达式的...
    zhangivon阅读 962评论 0 0
  • 周延刚把欠了2个多月的房租补上,屋里的热水器就坏了。每次清了帐,房东就从一只渴血的母蚊子变成了海上的老神仙,从甩不...
    柳比歇夫阅读 658评论 0 3

友情链接更多精彩内容