- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构》讲稿
数据结构 (2)完全满二叉树 若一个二叉树至多只有最下面的两层上结点的度数小于2,并且最下一层上的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树。 满二叉树是完全二叉树,完全二叉树不一定是满二叉树。在满二叉树的最下一层上,从最右边开始连续删去若干结点后得到是二叉树仍然是一棵完全二叉树。在完全二叉树中,若某个结点没有左孩子,则它一定没有右孩子,即该结点必是叶结点。 不是完全二叉树 这是一棵完全二叉树 数据结构 5、二叉树的遍历 所谓遍历是指沿着某条搜索路线,依次对树中每个结点做一次且仅做一次访问。 [例1]给定下列二叉树,分别写出它们的前序、中序、后序遍历。分析:根据三种遍历的定义,可得: (1)前序遍历为 (2)中序遍历为 (3)后序遍历为 遍历算法: 前序遍历:先访问根结点,再访问左子树,最后访问右子树 中序遍历:先访问左子树,再访问根结点,最后访问右子树 后序遍历:先访问左子树,再访问右子树,最后访问根结点 数据结构 [例2]一棵树的前序遍历为ABDECFGHI,中序遍历为DBEAFCHIG。请画出这棵树,并写出它的后序遍历。 数据结构 [例3]对任何一棵二叉树T,设n0、n1、n2分别是度数为0、1、2的顶点数,则下列断中正确的是( ) A. n0 = n2+1 B. n1= n0 +1 C. n2 = n0 +1 D. n2 = n0 +2 [例4]一个高度为h的二叉树最小元素数目是( )。 A.2h+1 B.h C.2h-1 D.2h 数据结构 [例5]二叉树T,已知其前序遍历序列为1 2 4 3 5 7 6,中序遍历序列为4 2 1 5 7 3 6,其后序遍历序列为( )。 A.4 2 5 7 6 3 1 B.4 2 7 5 6 3 1 C.4 2 7 5 3 6 1 D.4 7 2 3 5 6 1 [例6]在有N个叶子结点的二叉树中,其度数为2的节点总数为( )。 A.不确定 B.2N-1 C.2N+1 D.N-1 数据结构 数据结构 前缀表达式 前缀表达式就是前序表达式 前缀表达式就是不含括号的算术表达式,而且它是将运算符写在前面,操作数写在后面的表达式,为纪念其发明者波兰数学家Jan Lukasiewicz也称为“波兰式”。例如,- 1 + 2 3,它等价于1-(2+3)。 前缀表达式如何求值 对于一个前缀表达式的求值而言,首先要从右至左扫描表达式,从右边第一个字符开始判断,如果当前字符是数字则一直到数字串的末尾再记录下来,如果是运算符,则将右边离得最近的两个“数字串”作相应的运算,以此作为一个新的“数字串”并记录下来。一直扫描到表达式的最左端时,最后运算的值也就是表达式的值。 例如,前缀表达式“- 1 + 2 3“的求值,扫描到3时,记录下这个数字串,扫描到2时,记录下这个数字串,当扫描到+时,将+右移做相邻两数字串的运算符,记为2+3,结果为5,记录下这个新数字串,并继续向左扫描,扫描到1时,记录下这个数字串,扫描到-时,将-右移做相邻两数字串的运算符,记为1-5,结果为-4,所以表达式的值为-4。 数据结构 前缀表达式有什么用处 前缀表达式是一种十分有用的表达式,它将中缀表达式转换为可以依靠简单的操作就能得到运算结果的表达式。例如,(a+b)*(c+d)转换为*,+,a,b,+,c,d。它的优势在于只用两种简单的操作,入栈和出栈就可以解决任何中缀表达式的运算。 其运算方式为:如果当前字符(或字符串)为数字或变量,则压入栈内;如果是运算符,则将栈顶两个元素弹出栈外并作相应运算,再将结果压入栈内。当前缀表达式扫描结束时,栈里的就是中缀表达式运算的最终结果。 中缀表达式转换为前缀表达式的一些例子 a+b --- +,a,b a+(b-c) --- +,a,-,b,c a+(b-c)*d --- +,a,*,-,b,c,d 数据结构 图 图是一种比较复杂的非线性结构。 一、定义: 图G由两个集合V和E组成,记为G=(V,E) V是顶点的有穷非空集合。E是V中顶点之间边的有穷集合。 通常将图G的顶点集和边集分别记为V(G)和E(G) 有向图:每条边都有方向的 (一条有向边是由两个顶点组成的有序对,有序对通常用尖括号表示。例如vi,vj表示一条有向边,vi是边的起点,vj是边的终点。因些vi, vj 和 vj , vi 是两条不同的边。) V(G1)= E(G1)= 二、有向图和无向图 无向图:每条边都没有方向 ( ) V(G2)= E(G2)
文档评论(0)