1 / 24
文档名称:

怎样用栈实现递归与非递归的转换.doc

格式:doc   大小:35KB   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

怎样用栈实现递归与非递归的转换.doc

上传人:﹎多多Dad 2020/3/3 文件大小:35 KB

下载得到文件列表

怎样用栈实现递归与非递归的转换.doc

相关文档

文档介绍

文档介绍:?  1)并不是每一门语言都支持递归的.  2)有助于理解递归的本质.  3)有助于理解栈,.  递归与非递归的转换基于以下的原理:,那个"原理"并没有通过严格的数学证明,只是我的一个猜想,只是在至少在我遇到的例子中是适用的.  学习过树结构的人都明白,有三种方法能够遍历树:前序,中序,,,那个地点以专门的二叉树来讲明,只是大多数情况下二叉树差不多够用,而且理解了二叉树的遍历,)前序遍历a)递归方式:[code:1:2d]voidpreorder_recursive(BitreeT)/*先序遍历二叉树的递归算法*/{if(T){visit(T); /*访问当前结点*/preorder_recursive(T->lchild);/*访问左子树*/preorder_recursive(T->rchild);/*访问右子树*/}}[/code:1:2d]b)非递归方式[code:1:2d]voidpreorder_nonrecursive(BitreeT)/*先序遍历二叉树的非递归算法*/{initstack(S);push(S,T); /*根指针进栈*/while(!stackempty(S)){while(gettop(S,p)&&p){/*向左走到尽头*/visit(p);/*每向前走一步都访问当前结点*/push(S,p->lchild);}pop(S,p);if(!stackempty(S)){/*向右走一步*/pop(S,p);push(S,p->rchild); }}}[/code:1:2d]2)中序遍历a)递归方式[code:1:2d]voidinorder_recursive(BitreeT)/*中序遍历二叉树的递归算法*/{if(T){inorder_recursive(T->lchild);/*访问左子树*/visit(T); /*访问当前结点*/inorder_recursive(T->rchild);/*访问右子树*/}}[/code:1:2d]b)非递归方式[code:1:2d]void inorder_nonrecursive(BitreeT){initstack(S);/*初始化栈*/push(S,T);/*根指针入栈*/while(!stackempty(S)){while(gettop(S,p)&&p) /*向左走到尽头*/push(S,p->lchild);pop(S,p);/*空指针退栈*/if(!stackempty(S)){pop(S,p);visit(p);/*访问当前结点*/push(S,p->rchild);/*向右走一步*/}}}[/code:1:2d]3)后序遍历a)递归方式[code:1:2d]voidpostorder_recursive(BitreeT)/*中序遍历二叉树的递归算法*/{  if(T){  postorder_recursive(T->lchild);/*访问左子树*/  postorder_recursive(T->rchild);/*访问右子树*/  visit(T); /*访问当前结点*/  }}[/code:1:2d]b)非递归方式[code:1:2d]typedefstruct{BTNode*ptr;enum{0,1,2}mark;}PMType; /*有mark域的结点指针类型*/voidpostorder_nonrecursive(BiTreeT)/*后续遍历二叉树的非递归算法*/{PMTypea;initstack(S); /*S的元素为PMType类型*/push(S,{T,0}); /*根结点入栈*/while(!stackempty(S)){pop(S,a);switch(){case0:push(S,{,1}); /*修改mark域*/if(->lchild) push(S,{->lchild,0});/*访问左子树*/break;case1:push(S,{,2}); /*修改mark域*/if(->rchild) push(S,{->rchild,0});/*访问右子树*/break;case2:visit(); /*访问结点*/}}}[/code:1:2d]      4)如何实现递归与非递归的转换         通常,一个函数在调用另一个函数之前

最近更新

保险中介部个人工作计划与保险公司2018年5月工.. 5页

湖南省永州市2025年七年级下学期生物月考试题.. 9页

保安班长年终总结报告与保安班长每周工作总结.. 11页

体育部年终工作计划与体育部年终工作计划2018.. 4页

住宅广告策划方案与住宅楼基础工程安全管理方.. 30页

优秀稽查大队党支部2018年组织工作要点与优秀.. 8页

优秀员工2018年度工作总结与优秀员工试用期工.. 8页

企业市场部销售工作计划与企业年庆综合庆典活.. 4页

仓库试用期三个月工作总结与仓管2018年终工作.. 6页

人生演讲稿:好习惯好人生演讲稿与人生演讲稿.. 13页

人教版2020年一年级数学【下册】过关检测试题.. 5页

交通部工作总结范文与产品检测技术员工作总结.. 6页

交通局基层组织整改工作方案与交通局学法实施.. 7页

云南省实验幼儿园幼升小衔接班能力检测试题-含.. 4页

云南省2020年保育员四级能力考试试题试题 11页

云南省2018版保育员五级业务水平考试试题试卷.. 10页

事故应急救援预案演练效果评审方法及内容与事.. 3页

村卫生室管理办法 13页

人防工程防汛的应急预案 4页

小学四年级体育健康教案 13页

网络预约出租汽车驾驶员的相关规定 7页

电梯安装维修劳务合同 5页

农产品质量安全培训提纲 9页

跨公路管道桁架施工方案 37页

李波 在津巴布韦雕刻执著 8页

厨房食品添加剂公示表格 1页

曲线变直线直线变曲线PPT效果动画 2页