当前位置: 首页 > wzjs >正文

吉安网站建设0796abc佛山网站优化软件

吉安网站建设0796abc,佛山网站优化软件,户外平台设计,银川做淘宝网站的一、题目解析 对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧,而非…

一、题目解析

对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。

二、算法原理

递归调用本质是系统建立栈帧,而非递归则是用栈来存储数据,实现类似递归的效果。

首先,我们先简单了解一下递归调用时,是如何遍历的?

前序遍历,由根、左子树、右子树的顺序遍历,打印时直接打印根节点的值。

根据这个我们把它转换到非递归上,对于非递归遍历,左子树节点全部入栈,然后依次访问左子树节点的右子树,由于栈的特性保证后进先出,所以不用担心遍历出错,对于右子树的遍历同样如此,左子树进栈,然后访问右子树。

由此我们可以看出非递归本质上与递归没有多大差别。

三、代码示例

class Solution {
public:vector<int> preorderTraversal(TreeNode* root) {stack<TreeNode*> st;TreeNode* cur = root;vector<int> v;while(cur || !st.empty()){//访问一棵树的开始//1.访问左路节点,左路节点入栈,后续依次访问左路节点的右子数while(cur){v.push_back(cur->val);st.push(cur);cur = cur->left;}//依次访问左路节点的右子树TreeNode* top = st.top();st.pop();//子问题的方式访问右子树cur = top->right;}return v;}
};

push是栈的入数据操作,top则是栈的获取栈顶元素操作,pop则是栈的删数据操作,push_back是vector的尾插操作

 

四、非递归遍历流程

 

 看到最后,如果对您有所帮助,还请点赞、收藏和关注,点点关注不迷路,我们下期再见!

 

http://www.dtcms.com/wzjs/135346.html

相关文章:

  • 专业做网站公司24小时接单下载百度网盘
  • 西宁做网站需要多少钱百度小说搜索风云榜
  • 做柜子好的设计网站拼多多seo是什么意思
  • 企业网站建设专业精准丨 鸣远科技河南网络推广那家好
  • 什么是管理seo外链是什么意思
  • 网站做采集会有问题么网络推广引流方式
  • 专业制作网站公司哪家好seo网站优化服务
  • 哈尔滨网站建设优化优化关键词的方法包括
  • 企业做网站应注意什么网站seo优化排名
  • 非物质文化遗产网站怎么做外链代发免费
  • 电商网站建设方案网络广告人社区
  • 长沙网站设计公司哪家好百度seo原理
  • 网站后台流程百度区域代理
  • 织梦修改网站背景颜色百度seo培训公司
  • 西安做网站seo推广网站
  • 网站代码开发定制怎么弄一个自己的网址
  • 电信100m光纤做网站广告营销平台
  • 查工程项目的网站百度seo外链推广教程
  • 深圳网站做的好的公司名称汕头网站建设公司
  • 深圳龙岗网站开发太原seo关键词优化
  • 路由器做网站教程全国人大常委会委员长
  • 无忧网站建设服务网络广告宣传平台
  • 嘉兴网站建设的地方合肥seo快排扣费
  • 做网站 360今日头条新闻10条简短
  • 重庆制作网站培训机构济南seo整站优化价格
  • 小姐姐导航c盘优化大师
  • 外贸电子商务网站深圳百度公司地址在哪里
  • seo网站优化公司域名网站查询
  • 巴中企业网站建设小程序运营推广公司
  • 旅游网站的设计栏目seo的工作内容主要包括