- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十讲 二叉树 主讲: 朱郑州 主要内容 二叉树的特点 二叉树的基本形态 二叉树的基本形态 特殊的二叉树 特殊的二叉树 特殊的二叉树 特殊的二叉树 特殊的二叉树 特殊的二叉树 二叉树的基本性质 二叉树的基本性质 二叉树的基本性质 二叉树的基本性质 完全二叉树的基本性质 完全二叉树的基本性质 完全二叉树的基本性质 完全二叉树的基本性质 二叉树的抽象数据类型定义 二叉树的抽象数据类型定义 二叉树的抽象数据类型定义 二叉树的抽象数据类型定义 二叉树的抽象数据类型定义 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 二叉树的遍历操作 主要内容 顺序存储结构 顺序存储结构 顺序存储结构 顺序存储结构 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 二叉链表 三叉链表 三叉链表 三叉链表 三叉链表 线索链表 线索链表 线索链表 线索链表 线索:将二叉链表中的空指针域指向前驱结点和后继结点的指针被称为线索; 线索化:使二叉链表中结点的空链域存放其前驱或后继信息的过程称为线索化; 线索二叉树:加上线索的二叉树称为线索二叉树。 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 线索链表 层序遍历 A B C D E F G 遍历序列: A A B C B D C E F G D E F G 层序遍历 队列Q初始化; 2. 如果二叉树非空,将根指针入队; 3. 循环直到队列Q为空 3.1 q=队列Q的队头元素出队; 3.2 访问结点q的数据域; 3.3 若结点q存在左孩子,则将左孩子指针入队; 3.4 若结点q存在右孩子,则将右孩子指针入队; 二叉树的建立 为了建立一棵二叉树,将二叉树中每个结点的空指针引出一个虚结点,其值为一特定值如“#”,以标识其为空,把这样处理后的二叉树称为原二叉树的扩展二叉树。 为什么如此处理? 如何由一种遍历序列生成该二叉树? 遍历是二叉树各种操作的基础,可以在遍历的过程中进行各种操作,例如建立一棵二叉树。 二叉链表 扩展二叉树的前序遍历序列:A B # D # # C # # D B A C # D B A C # # # # 二叉树的建立 二叉链表 设二叉树中的结点均为一个字符。假设扩展二叉树的前序遍历序列由键盘输入,root为指向根结点的指针,二叉链表的建立过程是: 首先输入根结点,若输入的是一个“#”字符,则表明该二叉树为空树,即root=NULL;否则输入的字符应该赋给root-data,,之后依次递归建立它的左子树和右子树 。 二叉树的建立 二叉链表 void BiTree(BiNode *root) { creat(root); } void Creat(BiNode *root) { scanf(ch); if (ch==# ) root=NULL; else { root=(BiNode *)malloc(sizeof(BiNode)); root-data=ch; creat(root-lchild); creat(root-rchild); } } 建立二叉递归算法 二叉链表 二叉树算法设计练习 遍历二叉树是二叉树各种操作的基础,遍历算法中对每个结点的访问操作可以是多种形式及多个操作,根据遍历算法的框架,适当修改访问操作的内容,可以派生出很多关于二叉树的应用算法。 void InOrder (BiNode *root) { if (root==NULL) return; else { InOrder(root-lchild); printf(root-data); InOrder(root-rchild); } } 二叉树算法设计练习 设计算法求二叉树的结点个数。 void Count(BiNode *root) //n为全局量并已初始化为0 { if (root) { Count(root-lchild); n+ +; Co
您可能关注的文档
最近下载
- 2025版《举一反三》章节综合测试卷第八章 直线和圆、圆锥曲线综合测试卷(含答案及解析).pdf VIP
- 2022预应力混凝土空心板应用技术规程.docx VIP
- 2025年农产品质量安全技能大赛考试题库资料(含答案).docx VIP
- 七年级上册语文读读写写注音及解释(1).pdf VIP
- 内蒙古自治区2021-2022学年普通高学校业水平考试(高二会考)英语真题和答案详解.pdf VIP
- 最新初中生物新课标《义务教育生物学课程标准(2022-年版)》学习解读PPT课件.pptx VIP
- 中考英语考试真题及详细参考答案【完整2份】人教版.pdf VIP
- 新教材 高中英语外研版必修第一册全册各单元英语作文写作指导.pdf VIP
- 妇产科护理质量改进分析.pptx VIP
- 股票大作手--操盘术.pdf VIP
原创力文档


文档评论(0)