- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.2.2 二叉树的性质 (3+2) 6.3.2 线索二叉树 为识别复用的两种不同信息,特增加两个标志域: 1. 有关线索二叉树的几个术语: 例:带了两个标志的某先序遍历结果如下表所示,请画出对应的二叉树。 例1:画出以下二叉树对应的中序线索二叉树。 例2:【 00年华中科技大学计算机系考研题】给定如图所示二叉树T,请画出与其对应的中序线索二叉树。 线索二叉树的生成算法(递归算法见教材P134-135) 3. 线索二叉树的遍历(无需堆栈) 附:中序线索二叉树遍历步骤 (算法6.5): 算法流程: * 建树算法: Status CreateBiTree( BiTree T ){ //构造二叉树T scanf(“%c”,ch); if(ch==’ ’)T=NULL; else{ if(!(T=( BiTNode*)malloc(sizeof(BiTNode))))exit(overflow); T-data=ch; //生成根结点 CreateBiTree(T-lchild); //构造左子树 CreateBiTree(T-rchild); //构造右子树 } return OK; } //CreateBiTree 输入序列: A B C ? ? D E ? G ? ? F ? ? ? * 特别讨论:若已知先序(或后序)遍历结果和中序遍历结果,能否“恢复”出二叉树? 例:已知一棵二叉树的中序序列和后序序列分别是BDCEAFHG 和 DECBHGFA,请画出这棵二叉树。 分析: ①由后序遍历特征,根结点必在后序序列尾部(即A); ②由中序遍历特征,根结点必在其中间,而且其左部必全部是左子树的子孙(即BDCE),其右部必全部是右子树的子孙(即FHG); ③继而,根据后序中的DECB子树可确定B为A的左孩子,根据HGF子串可确定F为A的右孩子;以此类推。 【严题集6.31④】 请证明:由一棵二叉树的先序序列和中序序列可唯一确定这棵二叉树。 * 已知中序遍历:B D C E A F H G 已知后序遍历:D E C B H G F A (B D C E) ( F H G) A (D C E) B F G H C D E A B B A C C D C E 详细说明: * 外校考题:试写出如图所示的二叉树按中序遍历时得到的结点序列。 答: LDR:B F J D G K A C H E L I M 04级期末考题:由1001个结点构成的二叉树,何种型态叶子结点最多,何种叶子最少?分别给出叶子结点个数和度为1结点的个数。 答:因为 n=n0+n1+n2 完全二叉树叶子最多----叶子结点501个,度为1结点的个数为0; 单支树的叶子最少----叶子结点个数为1,度为1结点的个数1000 所以, 空指针数目=2n-(n-1)=n+1个。 证明:用二叉链表存储包含n个结点的二叉树,结点必有2n个链域(见二叉链表数据类型说明)。 除根结点外,二叉树中每一个结点有且仅有一个双亲,意即每个结点地址占用了双亲的一个直接后继,n个结点地址共占用了n-1个双亲的指针域。也就是说,只会有n-1个结点的链域存放指针。 Threaded Binary Tree 讨论:用二叉链表法(l_child, r_child)存储包含n个结点的二叉树,结点的指针区域中会有多少个空指针? 有n+1个! 结论:用二叉链表法存储包含n个结点的二叉树,结点的指针区域中会有n+1个空指针。 可以用它来存放当前结点的直接前驱和后继等线索,以加快查找速度。这就是线索二叉树的意义和用途。 疑问1:二叉树是1:2的非线性结构,如何定义其惟一的直接后继? 答:要遍历之后才能得到,且不同遍历算法得到的后继也不同。 先依遍历规则把每个结点对应的前驱或后继线索预存起来,这叫做“线索化”。 疑问2:获得这种“直接前驱”或“直接后继”有何意义? 答:从任一结点出发都能快速找到其前驱和后继,且不必借助堆栈 疑问3:如何经济的(预先)存放这类信息? 答:左孩子/前驱复用,右孩子/后继复用,后者称之为线索 rchild RTag data LTag lchild 约定: 当Tag域为0时,表示正常情况; 当Tag域为1时,表示线索情况. 前驱(后继) 左(右)孩子 各1bit 疑问4:计算机如何识别是孩子指针还是线索指针? 线索链表: 线 索: 线索二叉树: 线 索 化: 用含Tag的结点样式所构成的二叉链表 指向结点前驱和后继的指针 加上线索的二叉树 对二叉树以某种次序遍历使其变为线索二叉树的过程 线索化过程就是在遍
您可能关注的文档
- 《选择代理记账公司的标准》-(课件).ppt
- 《选择能够研究的问题》-(课件).ppt
- 《选择统计图》-(课件).ppt
- 《选择携商 轻松创业》-(课件).ppt
- 《选择研究主题》-(课件).ppt
- 《学第二定律的微观解释》(课件可以编辑)》-(课件).ppt
- 《学大教育(教育咨询师)专业培训体系》-(课件).ppt
- 《学风建设动员暨表彰大会》-(课件).ppt
- 《学和思教育薪酬表》-(课件).ppt
- 《学会团结合作》-(课件).ppt
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)