计算机软件基础81826.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文档。上传文档
查看更多
计算机软件基础81826.ppt

2.5.1 树的定义 练习 (新)p154 2.20 设树的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1.问T中有多少个叶子结点? 推广——(作业) 已知一棵度为k的树中有n1 个度为1的结点,n2 个度为2的结点,…nk 个度为k的结点,问该树中有多少个叶子结点? 2.5.2 二叉树 (Binary Tree) 1.二叉树的定义及其性质 (1) 二叉树的定义 课 堂 练 习 新 p154 2.22 设一棵完全二叉树具有1000个结点。问该完全二叉树有多少个叶子结点?有多少个度为2的结点?有多少个度为1的结点?若完全二叉树具有1001个结点,再回答上述问题,并说明理由。 (5)树与二叉树的区别 A.树中结点的最大度数没有限制,二叉树结点最大度数为2。 B.树的结点子树无左、右之分,二叉树的结点子树有明确的左、 右之分。 课 堂 练 习 最早提出遍历问题的是对存储在计算机中的表达式求值。将表达式(a+b*c)-d/e用二叉树表示,如图所示: 练 习 某二叉树的先序遍历序列为:IJKLMNO,中序遍历序列为:JLKINMO,则后序遍历序列为________。 A. LKJNOMI B. LKNJCMI C. JLKMNOI D. LKNOJMI 总结与提高 注意树结构与线性结构的区别 树的定义 二叉树的定义 二叉树的存储 二叉树的遍历(重点,实现了非线性结构的线性化,掌握和理解递归的思想。) 对比树型结构和线性结构的结构特点 邻接表是图的一种链式存储结构。对图的每个顶点建立一个单链表(n个顶点建立n个单链表),第i个单链表中的结点包含顶点Vi的所有邻接顶点。 struct gpnode *creatgp(char d[] ,int n) { struct gpnode *head; struct node *p; int k,m,v; head=(struct gpnode *)malloc(n*sizeof(struct gpnode)); for (k=0;k<n;k++) { (head+k)-data=d[k]; (head+k)-link=NULL; printf(“input linked list of %c :\n”,d[k]); scanf(“%d%d”,m,v); while (m>=0) /*输入后件信息未结束*/ { p=(struct node *)malloc(sizeof(struct node)); p-num=m; p-val=v; p-next=(head+k)-link; (head+k)-link=p; scanf(%d%d,m,v); } } return(head); } 根据邻接表计算顶点的出度和入度 逆邻接表 为求顶点Vi的入度,对每个顶点Vi,建立一个链接以Vi为弧头的邻接点链表,称该表为逆邻接表。例如G2的逆邻接表为: 练 习 已知右图所示的有向图,请给出该图的 每个顶点的入/出度 邻接矩阵 邻接表 逆邻接表 2.6.3 图的遍历(Traversing Graph) 从图中某一顶点出发,访遍图中其余顶点,且使每个顶点仅被访问一次.(用一个数组记下访问过的顶点) 在广度优先遍历中,要求先被访问的顶点其邻接点也被优先访问,因此,必须对每个顶点的访问顺序进行记录,以便后面按此顺序访问各顶点的邻接点。 应利用一个队列结构记录顶点访问顺序,就可以利用队列结构的操作特点,将访问的每个顶点入队,然后,再依次出队,并访问它们的邻接点。 广度优先遍历法举例 遍历产生的结果 广度优先遍历G6所走过的序列: V1? V2 ? V3 ? V4 ? V5 ? V6 所走过的边: (V1,V2),(V1,V3),(V1,V4),(V2,V5),(V4,V6) 深度优先遍历法类似于树的先根遍历法。 算法思想: step1 从图中某个顶点V0出发,并访问此顶点; step2 从V0出发,访问与V0邻接的顶点V1后,再从V1出发,访问与V1邻接且未被访问过的顶点V2。重复上述过程,直到不存在未访问过的邻接点为止。 step3 如果是连通图,从任一顶点V0出发,就可以遍历所有相邻接的顶点;如果是非连通图,则再选择一个未被访问过的顶点作为出发点,重复step1、step2,直到全部被访问过的邻接

文档评论(0)

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

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

1亿VIP精品文档

相关文档