- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉树的基本术语 叶子(leaf) :度为0的结点,也称为终端结点。 分支结点:度不为0的结点,也称为非终端结点或内部结点。 二叉树的基本术语 广度优先(逐层)遍历 队列实现广度优先遍历 template class T void LevelOrder(BinaryTreeNodeT *t) {//对*t逐层遍历 BinaryTreeNodeT *p=t; LinkedQueueBinaryTreeNodeT* Q; while(p) { coutp-data;//访问p if(p-LeftChild) Q.Add(p-LeftChild); //将p的孩子放入队列 if(p-RightChild) Q.Add(p-RightChild); //访问下一个结点 if(Q.IsEmpty()) return; else Q.Delete(p);//相当于p=s.top(); s.pop(); } } 先序遍历递归算法 template class T void PreOrder(BinaryTreeNodeT *t) {//对*t进行前序遍历 if(t){ coutt-data; //访问根结点 PreOrder(t-LeftChild); //前序遍历左子树 PreOrder(t-RightChild); //前序遍历右子树 } } 先序遍历的非递归实现 先序遍历的非递归实现 先序遍历的非递归实现 template class T void PreOrderTranverse(BinaryTreeNodeT *t){ StackBinaryTreeNodeT* s(20); BinaryTreeNodeT *p; p=t; s.add(p); while(!s.IsEmpty()){ s.delete(p);//相当于p=s.top(); s.pop(); coutp-data; if(p-rightchild) s.add(p-rightchild); if(p-leftchild) s.add(p-leftchild); } } 后序遍历的非递归实现算法 0. 将根节点作为当前节点 1.进栈过程: a)如果当前节点不空且具有左子树,将当前节点压入栈中,否则进入2 b) 将当前节点的左子树的根节点设置为当前节点 c)重复a) 2.出栈过程: a) 如果当前节点不空且没有右子树,或者其右子树的根节点已经访问,访问之,否则进入3 b) 若栈空,结束,否则取出当前栈顶节点作为当前节点 c) 重复a) 3.将当前节点压入栈中 4.将当前节点的右子树的根节点设为当前节点,重复1 后序遍历的非递归实现 二叉树操作算法举例 遍历二叉树是二叉树各种操作的基础,即很多操作可以在遍历过程中完成。 根据遍历算法的程序框架,可以派生出很多关于二叉树的应用算法,如求结点的双亲、结点的孩子,判定结点所在层次等,甚至可以在遍历过程中生成结点,建立二叉树的存储结构。 int CountLeaf(BinaryTreeNode * root) { ??? if(root==NULL) return 0; ? ? ?? else if(root-lchild==NULLroot-rchild==NULL) ??? return 1;??????? else ??? return CountLeaf(root-lchild)+ CountLeaf(root-rchild); } bool search(BinaryTreeNode * root, int k){ Using std::stack; //使用STL中的stack stack BinaryTreeNode * aStack; BinaryTreeNode * p=root; while(!aStack.empty( ) || p){ if (p){ aStack.push(p); //当前结点入栈 p=p-Lchild; } else{ p=aStack.top( ); // 返回栈顶 if (p-data==k)
您可能关注的文档
- 数据的波动1辩析.ppt
- 数据的回顾与思考辩析.ppt
- 数据的集中常用方法辩析.ppt
- 数据的离散程度(第2课时)辩析.ppt
- 房屋建筑学墙和基础-墙体类型及设计要求解决方案.ppt
- 数据的收集、整理、描述复习辩析.ppt
- 房屋建筑学屋顶构造解决方案.ppt
- 房屋建筑学之第11章屋顶解决方案.ppt
- 数据结构辩析.ppt
- 仿句续写、新闻概括解决方案.ppt
- Unit7SectionA(1a-2c)课件人教版(2012)九年级英语全册.pptx
- Unit1ANewStartUnderstandingIdeas课件-高中英语外研社.pptx
- Unit5reading2课件译林版九年级(2012)九年级英语上册.pptx
- 同底数幂的乘法课件人教版八年级数学上册_1.pptx
- (2023-2025)高考英语真题分类汇编:专题14 家庭与婚姻、就业与创业(全国通用)(原卷版).docx
- (2023-2025)高考英语真题分类汇编:专题02 生产资料所有制与经济制度(全国通用)(解析版).docx
- (2023-2025)高考英语真题分类汇编:专题04 中国共产党的领导(全国通用)(原卷版).docx
- (2023-2025)高考英语真题分类汇编:专题04 中国共产党的领导(全国通用)(解析版).docx
- (2023-2025)高考英语真题分类汇编:专题06 全面依法治国(全国通用)(原卷版).docx
- (2023-2025)高考英语真题分类汇编:专题02 生产资料所有制与经济制度(全国通用)(原卷版).docx
原创力文档


文档评论(0)