- 4
- 0
- 约2.94千字
- 约 19页
- 2023-07-06 发布于广东
- 举报
项目七 探究计算机中算术表达式的计算 — 了解二叉树及其基本操作
010203熟悉二叉树的基本常用操作,知道采用后缀表达式是如何让计算机完成计算的。了解二叉树的定义和构成,并了解用算术表达式是如何表示二叉树的。学习目标会使用二叉树(binary tree)将算术表达式转换为后缀表达式。
01问题导入
导入日常生活中,人们经常要进行四则运算,如计算 3×(4+5)-7,相信大家都知道该计算式正确的运算顺序,但是在计算机中输入这个计算式后(图 4-1),计算机是如何判断运算顺序并进行运算的呢?这样的计算式在计算机中称为算术表达式,书写为 3*(4+5)-7,须将其转换成方便计算机处理的表达式形式,并通过一定的算法来让计算机实现正确运算。
1. 探究计算机中算术表达式的计算原理算术表达式的值是按运算符间优先级从高到低来计算的,这与四则运算的规则完全相同。由于算术表达式的多样性和复杂性,人们很难设计很好的算法编程来求解任意表达式的值。历史上,有一位逻辑学家提出一种表达式,这种表达式的每一运算符都置于其运算对象之后,故也称为后缀表达式,如表达式 1+2 和 3*(4+5)-7 的后缀表达式分别为12+ 和 3 4 5 + * 7 -。可以看出,运算符是按原表达式优先级排列的,原本括号内的运算符排在了最前面,这样方便计算机按顺序来计算表达式,后缀表达式的计算过程如下图所示:
使用后缀表达式的优势在于只用进栈和出栈操作可以完成任意算术表达式的运算。其运算方式为:从左到右读取后缀表达式,如果当前字符为变量或者为数字,则进栈;如果是运算符,则将栈顶两个元素(运算对象)弹出作相应运算,结果再进栈,重复上述过程,直至表达式读取完,栈里就剩下最终结果。
2. 探究为何二叉树能将算术表达式转换为后缀表达式如何能将算术表达式转换为后缀表达式呢?有一种方法是使用二叉树(binary tree)来转换。二叉树是有一个根结点(无前驱),每个树杈都最多只有两个分支的树(可以是 0 个、1 个或 2 个),根结点左边的分支称为左子树、右边的分支称为右子树。结点的后继结点为左孩子和右孩子,没有分支的结点称为叶结点。树枝的方向都是往下的,箭头省略,如图4-2 所示。
图中所示的左子树和右子树是根结点 A 的左子树和右子树,在左子树中,结点 B 可以看成是该子树的根结点。而叶结点 D 和 E 可以看成是结点 B 的左子树和右子树(只有一个结点的子树),也是左孩子和右孩子。了解了二叉树后,依据某一规则对二叉树的结点依次进行访问,就可以得到一个序列。假设有图 4-3 所示二叉树,我们采用先访问其左子树,然后访问根结点,再访问右子树的规则(所有子树也按此规则进行访问)。
具体就是先访问根结点“-”的左子树,由于该左子树的根结点“*”也有自己的左子树即结点 3,而结点 3 并无左子树,所以最先访问的是结点 3,继而是“*”……最后访问的是根结点“-”的右子树,即结点 7。通过以上规则访问结点后,便可以得到 3*4+5-7 的序列。这样的序列称为中缀表达式,中缀表达式的运算符都位于运算对象的中间。中缀表达式的顺序是和算术表达式一致的,只是缺了括号。上述访问规则称为二叉树的中序遍历,可以看出,中序遍历的序列对应了中缀表达式。与中序遍历相应的还有先序遍历和后序遍历。先序遍历是先访问根结点,再访问左子树,最后访问右子树(对于所有子树也采用此规则遍历),如图 4-4 所示。
可以看出,先序遍历第一个访问的一定是根结点。后序遍历是先访问左子树,再访问右子树,最后访问根结点(对于子树也采用此规则遍历)。而上图所示二叉树的后序遍历得到的序列恰好对应了后缀表达式 3 4 5 + * 7 -。7.2 参照先序遍历和中序遍历的方式,画出5*7+8*(4-2)表达式二叉树的后序遍历得出后缀表达式的过程。活?动
如何能得到上述二叉树呢?算术表达式的运算符都是二元运算符,即每个运算符对应两个运算对象。先前说到按中序遍历得到的中缀表达式最贴近于算术表达式,因此,将运算符作为根结点,运算符前的运算对象作为左子树,运算符后的运算对象作为右子树(运算对象也可以是算术表达式)来构建二叉树。按中序遍历的方式访问该二叉树,正好能得到中缀表达式,如图 4-5 所示。按照此规则,对于算术表达式 3*(4+5)-7,我们把优先级最低的运算符“-”作为根结点,两边的运算对象作为左子树和右子树。对于左边的运算对象即表达式 3*(4+5),可以按同样规则来构建左子树,以此类推,最终建立如图 4-6 所示的表达式二叉树。对于这一表达式二叉树进行后序遍历可以得到后缀表达式。3. 构建二叉树
02知识链接
日常生活中很多事物可以用树形图来表示,如家族图谱、行政管理架构等,如图
您可能关注的文档
- 细胞膜的结构与功能【知识精讲+拓展提升】 高考生物一轮复习 (全国通用).pptx
- Unit+1+Teenage+life+Reading+and+Thinking+课件【知识精讲+拓展提升】 高一英语人教版(2019)必修第一册.pptx
- Unit+1+Listening+and+Speaking+课件【知识精讲+拓展提升】 高中英语人教版(2019)必修第一册.pptx
- 光合作用的影响因素及应用课件【知识精讲+拓展提升】高一上学期生物人教版必修1.pptx
- Unit+5+The+value+of+money+Vocabulary+课件【知识精讲+拓展提升】 高中英语人教版(2019)+必修第三册.pptx
- Unit+6+Writing+workshop+课件【知识精讲+拓展提升】 高中英语北师大版(2019)选择性必修第二册.pptx
- 高三生物一轮复习课件【知识精讲+拓展提升】主要细胞器的结构和功能.pptx
- Unit+1+Listening+and+speaking【知识精讲+拓展提升】 高中英语人教版(2019)必修第二册.pptx
- 蛋白质工程的原理和应用课件【知识精讲+拓展提升】高二下学期生物人教版选择性必修3.pptx
- 高三生物一轮复习课件【知识精讲+拓展提升】 群落及其演替.pptx
原创力文档

文档评论(0)