有向无环图表示算术表达式

今天一个童鞋问了我一个问题,沉思良久,做个博客记录一下。
题目描述:
用有向无环图描述表达式(A+B)*((A+B)/A),至少需要顶点的数目为几个?
分析:
1.  先画出算术表达式 (A+B)*((A+B)/A)的二叉树表示
 
2. (A+B)*((A+B)/A) 有重复的子表达式 (A+B),二叉树中可实现对子表达式的共享
所以:
相同的叶子节点可以共用:
所以至少需要五个顶点: *,+, /, A,B 各一个。

 

发表回复

Your email address will not be published. Required fields are marked *.

Copyright © 2026 晋坤 的博客. All Right Reserved.