- 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. 二叉树的性质 (3+2) 对于两种特殊形式的二叉树(满二叉树和完全二叉树),还特别具备以下2个性质: 举一反三 第6章 树和二叉树( Tree Binary Tree ) 6.3 遍历二叉树和线索二叉树 例1: 遍历的算法实现:用递归形式格外简单! DLR(NODE *root ) { if (root) //非空二叉树 { printf(“%d”,root-data); //访问D DLR(root-lchild); //递归遍历左子树 DLR(root-rchild); //递归遍历右子树 } } 对遍历的分析: 例:编写递归算法,计算二叉树中叶子结点的数目。 注:要实现遍历运算必须先把二叉树存入机内。 习题讨论: 特别讨论:若已知先序/后序遍历结果和中序遍历结果,能否“恢复”出二叉树? 【严题集6.31④】 证明:由一棵二叉树的先序序列和中序序列可唯一确定这棵二叉树。 中序遍历:B D C E A F H G后序遍历:D E C B H G F A * 数据结构 计算机与信息学院 刘勇 每课一贴: 有一个博士分到一家研究所,成为学历最高的人。有一天他到单位后面的小池塘去钓鱼,正好正副所长在他的一左一右也在钓鱼。他只是微微点了点头,这两个本科生有啥好聊的呢?不一会儿,正所长放下钓竿,伸伸懒腰,蹭蹭蹭从水面上如飞地走到对面上厕所。博士眼睛睁得都快掉下来了。水上飘?不会吧?这可是一个池塘啊。正所长上完厕所回来的时候,同样也是蹭蹭蹭地从水上飘回来了。怎么回事?博士生又不好去问,自己是博士啊!过一阵,副所长也站起来,走几步,蹭蹭蹭地飘过水面上厕所。这下子博士更是差点昏倒:不会吧,到了一个江湖高手集中的地方?博士也内急了。这个池塘两边有围墙,要到对面厕所非得绕十分钟的路,而回单位上又太远,怎么办?博士也不愿意去问两位所长,憋了半天后,也起身往水里跨:我就不信本科生能过的水面,我博士生不能过。只听咚的一声,博士栽到了水里。两位所长将他拉了出来,问他为什么要下水,他问:“为什么你们可以走过去呢?”两所长相视一笑:“这池塘里有两排木桩子,由于这两天下雨涨水正好在水面下。我们都知道这木桩的位置,所以可以踩着桩子过去。你怎么不问一声呢?”学历代表过去,只有学习力才能代表将来。尊重经验的人,才能少走弯路。一个好的团队,也应该是学习型的团队。 性质1: 在二叉树的第i层上至多有2i-1个结点(i1)。 性质2: 深度为k的二叉树至多有2k-1个结点(k0)。 性质3: 对于任何一棵二叉树,若2度的结点数有n2个,则叶子数n0必定为n2+1 (即n0=n2+1) 上堂课内容回顾 1. 树的基本知识 树的定义、 若干术语、逻辑结构、存储结构、基本运算 性质4: 具有n个结点的完全二叉树的深度必为?log2n?+1 性质5: 对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号为2i+1;其双亲的编号必为i/2(i=1 时为根,除外)。 问: 设一棵完全二叉树具有1000个结点,则它有 500 个叶子结点,有 499 个度为2的结点,有 1 个结点只有非空左子树,有 0 个结点只有非空右子树。 法1:先求全部叶子数。n0=489(末层)+11(k-1层)=500个; 法2:先求2度结点数。n2=255(k-2层)+244(k-1层)=499个; 这两种方法的缺点:都要先计算树的深度 k=?log2n?+1 =10; 法3:无需求树深k,便可快捷求出完全二叉树的叶子数: n0= ?n/2? // 取大于n/2的最小整数值 可由二叉树性质5轻松证明! (编号为i的结点,其孩子编号必为2i和2i+1) ① ② ④ ⑧ ⑤ ⑨ ③ ? ⑦ …… n n 已知最后一个结点编号为n,则其双亲? n/2 ? 肯定是最后一个非叶子结点。其编号之后的全部结点都是叶子了! 故,n0=n- ? n/2 ? = ?n/2? 问: 设一棵完全二叉树具有n个结点,第一个叶子节点的编号是?第i个呢? 问: 设一棵完全二叉树具有301个结点,则它有 个度为2的结点,有 个叶子结点,有 个结点只有非空左子树,有 个结点只有非空右子树,第21个叶子结点编号是 。 6.1 树的基本概念 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.5 赫夫曼树及其应用 (本章及本课程的重点) 一、遍历二叉树(Traversing Binar
文档评论(0)