- 1、本文档共65页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
§6.2.3 二叉树的存储结构§6.3.1 遍历二叉树§6.3.2 线索二叉树 【内容回顾】 6.1 树的定义和基本术语 6.2 二叉树 -6.2.1 二叉树的定义 -6.2.2 二叉树的性质 【课题导入】 回顾线性表的存储方法? 注意:1)对于一棵二叉树,若采用顺序存储时,对完全二叉树,比较方便;对非完全二叉树,将会浪费大量存储单元。 顺序结构存储二叉树的优点 1)存储时,元素的位置(下标+1)对应其在完全二叉树中的序号。 2)可快速方便地访问元素的双亲和左右孩子。 注意:对于一棵二叉树,若采用二叉链表存储时,当二叉树为非完全二叉树时,比较方便,若为完全二叉树时,将会占用较多存储单元(存放地址的指针)。 若一棵二叉树有n个结点,采用二叉链表作存储结构时,共有2n个指针域,其中只有n-1个指针指向左右孩子,其余n+1个指针为空。 在二叉链表结构中的操作 查询元素? 查询元素的后继? 查询元素的前驱? 从第一层开始,同一层从左到右。 例1:如右图 按层次遍历序列为: ABFCGDEH 特点:先被遍历的结点的孩子先于后遍历的结点的孩子遍历。 根据二叉树的结构,分为三部分: L 左子树 D 根结点 R 右子树 遍历二叉树的方法: 先序遍历 DLR 中序遍历 LDR 后序遍历 LRD 由于其中的左右子树也是二叉树,属于递归结构,所以常常借助递归算法实现。 若二叉树为空,则空操作; 否则, 访问根结点; 先序遍历左子树; 先序遍历右子树。 若二叉树为空,则空操作; 否则, 中序遍历左子树; 访问根结点; 中序遍历右子树。 若二叉树为空,则空操作; 否则, 后序遍历左子树; 后序遍历右子树。 访问根结点; 算法: int NodeCount ( BiTree T ) { if (T ==0 ) return 0; else return 1+NodeCount(T-lchild) +NodeCount(T-rchild); } 算法: int Depth(BiTree T ) { if (T==0 ) return 0; else return 1+max(Depth(T-lchild), Depth(T-rchild)); } 分析:先序序列的第一个是根,这是解题的突破口。 步骤:①先序序列的第一个是根 ②在中序序列中标出根,分成左右子树 ③在先序序列中标出左右子树(根据结点个数即可) ④分别对左右子树的先序和中序序列重复以上步骤直至完成。 例3: 设二叉树的中序序列为BDCEAGHF,后序序列为DECBHGFA,画出此二叉树。 §6.3.2 线索二叉树 何谓线索二叉树? 线索链表的遍历算法 如何建立线索链表? 课堂总结 主要内容:二叉链表存储结构;遍历二叉树的递归算法及其应用,包括:写遍历序列,统计(叶)结点个数,二叉树的深度,根据给定序列画出二叉树等,线索二叉树。 重点难点:遍历二叉树的递归算法及其应用。 L R D L R D L R D □ A □ □ D □ □ C L R D 后序遍历序列:D B C A 例4: 后序遍历 B A D B C □ □ □ □ □ void Postorder ( BiTree T ) { if ( T ) { //如果二叉树不为空 Postorder ( T - lchild ) ; //后序遍历左子树 Postorder ( T - rchild ) ; //后序遍历右子树 printf( T - data) ; //输出根结点 } } 递归算法描述 inorder(B子树); printf (A); inorder(C子树); A B C D E F T 参数T是A结点 (1)调用 inorder(NULL); printf (B); inorder(D子树); 参数T是B结点 输出B B (2)调用 inorder(NULL); printf (D); inorder(NULL); 参数T是D结点 输出D D (1)返回 (2)返回 输出A A (3)调用 参数T是C结点 inorder(NULL); printf (C); inorder(E子树); 输出C C
您可能关注的文档
最近下载
- 3.1《蜀道难》课件 统编版高中语文选择性必修下册.pptx VIP
- 2024-2025学年苏教版小升初数学重点难点题库详解.docx VIP
- 22J403-1 楼梯 栏杆 栏板一 (1).docx VIP
- SL258-2017 水库大坝安全评价导则.docx
- 2023年三级公共营养师《理论+技能》考试必刷必练题库(800题).docx VIP
- 市污水处理厂特许权bot项目投标文件商务方案.pdf VIP
- 2018四川对口升学高考模拟农林牧渔专业试题.pdf VIP
- 毕业论文-搬运机械手设计.doc VIP
- 苏教版数学小学六年级下学期重点难点精练试题详解(2024-2025学年).docx VIP
- 奥林巴斯 设备说明书260BF内镜 说明书.pdf
文档评论(0)