数据结构 第章 树形结构2
3. 后序遍历非递归算法 (2)第二种方法(常规方法) 由后遍历过程可知,采用一个栈保存需要返回的结点指针,先扫描根结点的所有左结点并一一进栈,出栈一个结点*b即当前结点,然后扫描该结点的右孩子结点并入栈,再扫描该右孩子结点的所有左结点并入栈。当一个结点的左右孩子结点均访问后再访问该结点,如此这样,直到栈空为止。 难点:如何判断一个结点*b的右孩子结点已访问过,为此用p保存刚刚访问过的结点(初值为NULL),若b-rchild==p成立(在后序遍历中,*b的右孩子结点一定刚好在*b之前访问),说明*b的左右子树均已访问,现在应访问*b。 void PostOrder2(BTNode *b) { BTNode *St[MaxSize];BTNode *p; int flag,top=-1; //栈指针置初值 do { while (b!=NULL) //将*b的所有左结点进栈 { top++; St[top]=b; b=b-lchild; } p=NULL; //p指向栈顶结点的前一个已访问的结点 flag=1; //设置b的左孩子为已访问过 找最左下结点 while (top!=-1 flag==1) {
您可能关注的文档
最近下载
- 2026年天津直机关公开遴选公务员笔试题及答案解析(B类).docx VIP
- 消毒供应中心低温灭菌.pptx VIP
- DL_T 5112—2021 水工碾压混凝土施工规范.docx VIP
- 2026云南省中职职教高考职业技能烹饪类专业理论模拟卷【B1】.doc VIP
- 《模拟电子技术基础(第五版)》全套课件(完整版).ppt VIP
- 公司治理:基本原理及中国特色-姜付秀-第13章+公司治理模式.pptx VIP
- 从存量经营到增量引擎-微信生态公私域融合经营白皮书.pdf VIP
- 京东仓储标准作业管理流程操作手册.docx VIP
- 【2025.11初一期中】海淀区英语试题.pdf VIP
- 电力电子技术阮新波习题答案.pdf VIP
原创力文档

文档评论(0)