- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(C版)第5章_树和二叉树_1018要点
广度优先周游二叉树 template class T void BiTreeT::LeverOrder(BiNodeT *root) { LinkQueueBiNodeT * aQueue; BiNodeT* pointer=root; if(pointer) aQueue.EnQueue(pointer); 首先创建一个空队列;判断根节点是否为空,如果不空,根节点入队 while(!aQueue.Empty()) { pointer=aQueue.Front()-next-data; //取队列首结点 BiNodeT* q=aQueue.DeQueue(); coutpointer-dataendl; //Visit(pointer-value());//访问当前结点 if(pointer-lchild) //左子树进队列 aQueue.EnQueue(pointer-lchild); if(pointer-rchild) //右子树进队列 aQueue.EnQueue(pointer-rchild); }//end while } 队首出队(P),输出队首的值,将P的所有孩子(非0)入队 重复第二步的工作,直到队空 二叉树算法设计练习 遍历二叉树是二叉树各种操作的基础,遍历算法中对每个结点的访问操作可以是多种形式及多个操作,根据遍历算法的框架,适当修改访问操作的内容,可以派生出很多关于二叉树的应用算法。 void InOrder (BiNodeT *root) { if (root==NULL) return; else { InOrder(root-lchild); coutroot-data; InOrder(root-rchild); } } 二叉树算法设计练习 设计算法求二叉树的结点个数。 void Count(BiNode *root) //n为全局量并已初始化为0 { if (root) { Count(root-lchild); n+ +; Count(root-rchild); } } 统计叶子节点的数目 增加一个数据成员,leafcount, 初值为0 对树进行遍历。 如果一个节点是叶子,则将leafcount+1; 可以在前序、中序或后序的遍历过程中进行计算。 算法分析 从根节点出发 判断根节点是否是叶子节点,如果是,则叶子数+1 否则,在左子树中遍历,并统计叶子节点的数目,在右子树中进行遍历,并统计叶子节点的数目 templatetypename T inline void BiTreeT:: countleaf(BiTreeNodeT * root){ if (root) { if (root-lchild==0 root-rchild==0) leafcount=leafcount+1; else { countleaf(root-lchild); countleaf(root-rchild); } } return; } 左右子树的交换 将每个节点的左、右子树进行交换 可以在遍历过程中进行交换。 算法分析 从根出发开始操作 如果要操作的节点是叶子或是空值,则不进行任何操作; 如果要操作的节点不是叶子节点,则交换左右儿子 对左子树进行处理 对右子树进行处理 左右子树进行交换 templatetypename T void BinarytreeT::jiaohuan(binarytreenodeT * root){ binarytreenodeT * temp; if (root==0) return ; else { if (root-lchild==0 root-rchild==0) return ; else{ temp=root-rchild; root-rchild=root-lchild; root-lchild=temp; jiaohuan(root-lchild); jiaohuan(root-rchild); } } } * * * * * * * * * 层序遍历 二叉树的层次遍历是指从二叉树的第一层(即根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问。 5.1 二叉树的逻辑结构 层序遍历序列:A B C D E F G A B C D
您可能关注的文档
- 班级风采展示大赛.ppt
- 数据图表与分析.ppt
- 数据处理-有效数字及其运算规则.ppt
- 班组长培训讲义巷道掘进.ppt
- 数据仓库与数据挖掘.ppt
- 数据库6版讲稿第六章----形式化关系查询语言.ppt
- 数据处理软件Excel 2010.pptx
- 数据库保护.ppt
- 数据库上课 第五讲 SQL语言_2(简单查询与连接).ppt
- 数据处理的基础知识.ppt
- 专题06 经济体制(我国的社会主义市场经济体制)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题11 世界多极化与经济全球化-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 专题03 经济发展与社会进步-5年(2020-2024)高考1年模拟政治真题分类汇编(浙江专用)(解析版).docx
- 专题09 文化传承与文化创新-5年(2020-2024)高考1年模拟政治真题分类汇编(北京专用)(原卷版).docx
- 5年(2020-2024)高考政治真题分类汇编专题08 社会进步(我国的个人收入分配与社会保障)(原卷版).docx
- 专题07 探索世界与把握规律-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 5年(2020-2024)高考政治真题分类汇编专题06 经济体制(我国的社会主义市场经济体制)(原卷版).docx
- 专题11 全面依法治国(治国理政的基本方式、法治中国建设、全面推进依法治国的基本要求)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题17 区域联系与区域协调发展-【好题汇编】十年(2015-2024)高考地理真题分类汇编(解析版).docx
- 专题01 中国特色社会主义-5年(2020-2024)高考1年模拟政治真题分类汇编(原卷版).docx
文档评论(0)