第7章 树.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 树

7.3 根树及其应用 对下图所示二叉有序正则树T, 按中序、前序、后序遍历的结果如下(下式中v表示v为子树的根): 例1:中根遍历: ( ( h d i ) b e ) a ( f c g ) 先根遍历: a ( b ( d h i ) e ) ( c f g ) 后根遍历: ( ( h i d ) e b ) ( f g c ) a 二叉树的遍历操作在《数据结构》等课程中还会遇到, 可用递归方法来实现。 例2:中序行遍: b a (f d g) c e 前序行遍: a b (c (d f g) e) 后序行遍: b ((f g d) e c) a * 用2叉有序树表示算式 利用二叉有序正则树可表示四则运算的算式, 然后根据不同的访问方法得到不同的算法。 每一个分支点放一个运算符. 二元运算符所在的分 支点有2个儿子, 运算对象是以这2个儿子为根的根 子树表示的子表达式, 并规定被减数和被除数放在 左子树上; 一元运算符所在的分支点只有一个儿 子, 运算对象是以这个儿子为根的根子树表示的子 表达式.数字和变量放在树叶上. 中序遍历结果 ((a*(b+c))+d*(e*f)))÷(g+((h-i)*j)) 7.3 根树及其应用 例7.7 1) 用二叉有序正则树表示下面算式: ( a * ( b + c )+ d * e * f ) ÷ ( g + ( h - i) * j ) 2) 用3种遍历法访问(1)中的二叉树, 并写出遍历结果。 解 1) 表示算式的二叉树如右图所示。 在上式中, 利用四则运算规则省去一些括号, 得到原算式, 所以, 中序遍历的结果还原了算式。 7.3 根树及其应用 前序遍历结果 ÷(+*a(+bc))(*d(*ef)))(+g(*(-hi)j)) 去掉遍历结果中的全部括号, 得: ÷+*a+bc*d*ef+g*-hij。 在上式中, 规定: 每个运算符与它后面紧邻的数进行运算, 其运算结果也是正确的。 我们称运算符在运算数前面的表示法为前缀符号(Prefix Notation)或波兰符号法(Polish Notation)。 7.3 根树及其应用 后序遍历结果: ((a(bc+)*)(d(ef*)*)+)(g((hi-)j*)+)÷ 去掉遍历结果的全部括号, 得: abc+*def**+ghi-j*+÷。 在上式中, 规定: 每个运算符与它前面紧邻的数进行运算, 其运算结果也是正确的。 我们称运算符在运算数后面的表示法为后缀符号法(Postfix Notation)或逆波兰符号法(Reverse Polish Notation)。 * 波兰符号法 波兰符号法(前缀符号法): 按前序行遍法访问表示算式的2叉有序树, 并舍去所有括号. 例1(例7.7续) ???b+cda??ef?+gh?ij 计算方法: 从右到左, 每个运算符号对它后面紧邻的2个(或1个)数进行运算. 例1(续) 设a=3, b=1, c=d=2, e=f=3, g=i=1, h=j=2. ???1+223??33?+12?12, ???1+223??33?+122 ???1+223??33?32, ???1+223??336 ???1+223?96, ???1+2233 ???1433, ??533, ?(15)3, 5 * 逆波兰符号法 逆波兰符号法(后缀符号法): 按后序行遍法访问表示算式的2叉有序树, 并舍去所有括号. 例2(例7.7续) bcd++a?ef?gh+ij??? ? 计算方法: 从左到右, 每个运算符号对它前面紧邻的2个(或1个)数进行运算. 例2(续) 122++3?33?12+12??? ? 122++3?33?12+2?? ? , 14+3?33?12+2?? ? 53?33?12+2?? ?, (15)33?12+2?? ? (15)912+2?? ?, (15)932?? ?, (15)96? ?, (15)3 ?, 5 实例 例7.8 用2叉有序树表示下述命题公式, 并写出它的波兰符号法和逆波兰符号法表达式. (p??q)?((?p?r)?(q?r)) 解 波兰符号法表达式 ??p?q???pr?qr 逆波兰符号法表达式 pq??p?r?qr??? 注: 当一元运算符在运算对象前面时, 应画成右儿子. * ? ? ? ? ? ? ? p p q q r r 学习要点与基本要求 掌握根树的定义; 掌握m叉树、正则树的概念及性质; 了解m叉树的应用; 能求出给定权序列的最佳二元前缀码; 写出算式的波兰表示和逆波兰表示

文档评论(0)

hf916589 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档