- 1、本文档共123页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 第六章 树和二叉树 内容提要 基本要求、重点、难点 例如: 6.2.1 二叉树 定义:二叉树是n(n?0)个结点的有限集,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成 特点 每个结点至多有二棵子树(即不存在度大于2的结点) 二叉树的子树有左、右之分,且其次序不能任意颠倒 基本形态 二叉树性质 性质1: 几种特殊形式的二叉树 满二叉树 定义: 二叉树的抽象数据类型定义 顺序存储结构 实现:按满二叉树的结点层次编号,依次存放二叉树中的数据元素 特点: 结点间关系蕴含在其存储位置中 浪费空间,适于存满二叉树和完全二叉树 链式存储结构 二叉链表 二叉树的遍历 遍历:每个结点均被访问一次,且仅被访问一次。 某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序 已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,则它的前序遍历序列 非递归算法如下: 2:为二叉树建立二叉链表(递归算法)以递归方式建立二叉树 遍历操作访问二叉树的每个结点,而且每个结点仅被访问一次。是否可在利用遍历,建立二叉链表的所有结点并完成相应结点的链接? 二叉树的生成 bitree *CreateBinTree() /*以加入结点的先序序列输入,构造二叉链表*/ { char ch; bitree *T; scanf(\n%c,ch); if (ch==‘0) return NULL; /*读入0时,将相应结点置空*/ else { T=(bitree *)malloc(sizeof(bitree)); /*生成结点空间*/ T-data=ch; T-Lchild=CreateBinTree(); /*构造二叉树的左子树*/ T-Rchild=CreateBinTree(); /*构造二叉树的右子树*/ return T; } } 6.3.2 线索二叉树 一、何谓线索二叉树? void ? lnorderThreading(BinThrTree ? *p, BinThrTree *pre) ? { // pre始终指向刚刚访问过的结点(pre的初值应为NULL),p指示当前正在访问的结点。*pre是结点*p的前趋,而*p是*pre的后继。 ? ? if (p) //p非空时,当前访问结点是*p { InorderThreading(p-lchild,pre); ? //左子树线索化 ? if(p-lchild==NULL) //若当前节点的左子树为空,则建立指向其前驱节点的前驱线索 { ? p-ltag=1;? p-lchild=pre; } else p-ltag=0; //若前驱节点不为空,且其右孩子为空, 建立前趋结点 pre 的右线索,指向结点 p/ if (pre!=NULL)????{ if (pre-rchild!=NULL) pre-rtag=0 ; ? ?else ?// 建立前趋结点 pre 的右线索,指向结点 p */ { pre-rtag=1 ;pre-rchild=p ;}??? } pre=p; //前驱指针 pre 跟上当前指针 p ,以便 p 向后移动 */ InorderThreeding(p-rchild); ? //右子树线索化 ? ? }//endif ? } ? //InorderThreading Void inthread(BiThrTree *p) { p = T; while(p!=NULL) { while(p-ltag==0) p = p-lchild; //Tag中的值如果是0,表示child指针指向孩子节点,如果值是1,表示 child指针指向前驱或后继 printf(p-data=%c ,p-ltag=%d ,p-rtag=%d ,p-data,p-ltag,p-rtag); while(p-rtag==1p-rchild!=NULL) // 遍历后继节点 { p=p-rchild; printf(p-data=%c ,p-ltag=%d ,p-rtag=%
您可能关注的文档
最近下载
- 2024中国AIGC文创产业指数.pdf
- 2022年新员工安全综合知识考试题库(有答案).docx
- 海关核查培训课件.pptx
- 【中国共产党巡视工作条例】中国共产党巡视工作条例全面解读PPT.pptx VIP
- 主任临床查房程序规范及评分标准.doc
- 人工智能在医学研究中的应用课件.pptx VIP
- 上海奉贤区社区工作者招聘笔试试题及答案2022.docx
- 专题02 单词词性转换易错题100题(重点词汇全掌握)【考题猜想】-2023-2024学年七年级英语下学期期末考点大串讲(牛津上海版).docx VIP
- 2022年版《义务教育科学新课程标准》试题及答案.pdf
- 自缢患者护理查房.ppt VIP
文档评论(0)