Amos的随笔

Java/Python/Go,软件测试等等

导航

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

题目描述:
用有向无环图描述表达式(A+B)*((A+B)/A),至少需要顶点的数目为几个?
分析:

  1. 先画出算术表达式 (A+B)*((A+B)/A)的二叉树表示
    在这里插入图片描述
  2. (A+B)*((A+B)/A) 有重复的子表达式 (A+B),二叉树中可实现对子表达式的共享
    在这里插入图片描述
    所以:
    在这里插入图片描述
    相同的叶子节点可以共用:
    在这里插入图片描述
    所以至少需要五个顶点: *+/AB 各一个。

posted on 2019-12-09 09:39  AmosChen  阅读(37)  评论(0编辑  收藏  举报  来源