[其它]数据结构第13次课 树C.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文档。上传文档
查看更多
[其它]数据结构第13次课 树C

先序遍历算法 DLR(NODE *root ) {if (root !=NULL) //非空二叉树 { printf(“%d”,root-data); //访问D DLR(root-lchild); //递归遍历左子树 DLR(root-rchild); //递归遍历右子树 } return(0); } 遍历增强版:如何用非递归算法遍历二叉树? 第6章 树和二叉树( Tree Binary Tree ) 问:用二叉链表法(l_child, r_child)存储包含n个结点的二叉树,结点的指针区域中会有多少个空指针? 证1: (间接法)用二叉链表存储包含n个结点的二叉树,结点必有2n个链域(见二叉链表数据类型说明)。 除根结点外,二叉树中每一个结点有且仅有一个双亲(直接前驱),所以只会有n-1个结点的链域存放指针,指向非空子女结点(即直接后继)。 二、线索二叉树(Threaded Binary Tree) 规 定: 有关线索二叉树的几个术语: 2. 线索二叉树的生成 例2:画出以下二叉树对应的中序线索二叉树。 4. 给定如图所示二叉树T,请画出与其对应的中序线索二叉树。 6.4 树和森林 1. 树和森林的存储方式 例1: 双亲表示法 2、用孩子表示法来存储 3、用孩子兄弟表示法来存储 例如: 2. 树和森林与二叉树的转换 树转二叉树举例: 讨论2:二叉树怎样还原为树? 森林转二叉树举例:(法二) 讨论4:二叉树如何还原为森林? 3、一般树的遍历 a b e i d f h g c 要点:把所有右孩子变为兄弟! a b e i d f h g c 法一: ① 各森林先各自转为二叉树; ② 依次连到前一个二叉树的右子树上。 讨论3:森林如何转为二叉树? 法二:森林直接变兄弟,再转为二叉树 (参见教材P138图6.17,两种方法都有转换示意图) 即F={T1, T2, …,Tm} B={root, LB, RB} A B C D E F G H J I A B C D E F G H J I A B C D E F G H J I 兄弟相连 长兄为父 孩子靠左 头根为根 A 要点:把最右边的子树变为森林,其余右子树变为兄弟 A B C D E F G H J I A B C D E F G H J I E F A B C D G H J I 即B={root, LB, RB} F={T1, T2, …,Tm} * 数据结构 计算机与信息学院 刘勇 * 数据结构 从前,有一位爱民如子的国王,在他的英明领导下,人民丰衣足食,安居乐业。深谋远虑的国王却担心当他死后,人民是不是也能过着幸福的日子,于是他招集了国内的有识之士。命令他们找了一个能确保人民生活幸福的永世法则。 三个月后,这班学者把三本六寸厚的帛书呈上给国王说:“国王陛下,天下的知识都汇集合这三本书内.只要人民读完它,就能确保他们的生活无忧了。”国王不以为然,因为他认为人民都不会花那么多时间来看书。所以他再命令这班学者继续钻研。二个月内,学者们把三本简化成一本。国王还是不满意。再一个月后,学者们把一张纸呈上给国王。国王看后非常满意地说:“很好,只要我的人民都真正日后有奉行这宝贵的智慧,我相信他们一定能过上富裕幸福的生活。”说完后便重重地奖赏了这班学者。 原来这张纸上只写了一句话:天下没有不劳而获的东西。 每课一贴: 上堂课内容回顾 1. 二叉树的遍历 DLR LDR LRD 先 (根)序遍历 中 (根)序遍历 后(根)序遍历 口诀: DLR—先序遍历,即先根再左再右 LDR—中序遍历,即先左再根再右 LRD—后序遍历,即先左再右再根 先序遍历:ABDGCEF 后序遍历:GDBEFCA 中序遍历:DGBAECF 中序遍历算法 LDR(NODE *root) {if(root !=NULL) {LDR(root-lchild); printf(“%d”,root-data); LDR(root-rchild); } return(0);} 后序遍历算法 LRD (NODE *root) {if(root !=NULL) {LRD(root-lchild); LRD(root-rchild); printf(“%d”,root-data); } return(0);} 结点数据类型定义 typedef struct node{ int data; struct node lchild,*rchild; } NODE; NODE *root;

文档评论(0)

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

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

1亿VIP精品文档

相关文档