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

营销网站建设情况调查问卷全球疫情最新数据

营销网站建设情况调查问卷,全球疫情最新数据,网页浏览器如何放大,请被人做网站最近刷到了树这一模块的算法题,树相关的算法题几乎都是用递归来实现的,但递归的思路却有点抽象,每次遇到递归,都是通过递归来深度或广度地遍历树,但对于递归遍历树的遍历路线,却有点抽象难懂,不…

最近刷到了树这一模块的算法题,树相关的算法题几乎都是用递归来实现的,但递归的思路却有点抽象,每次遇到递归,都是通过递归来深度或广度地遍历树,但对于递归遍历树的遍历路线,却有点抽象难懂,不知道遍历的路线是怎么样的,也对于返回的路线有点懵懂。

虽然知道是用递归,也知道递归可以一层一层从上到下地遍历,大体上的一个遍历路线是明白的,但是真要将递归一层层拆解分析的话,我还是有点不知所措的,所以今天研究了一小时,彻底将递归的一层层遍历拆解分析透彻了。

记录一下拆解分析的过程,以防之后又忘了,方便回顾。

 

拿上面这棵树来分析,遍历的代码是:

private void dfs(TreeNode root, int depth) {if (root == null) {return;}// 先访问 当前节点,再递归地访问 右子树 和 左子树。if (depth == res.size()) {   // 如果当前节点所在深度还没有出现在res里,说明在该深度下当前节点是第一个被访问的节点,因此将当前节点加入res中。res.add(root.val);}depth++;dfs(root.right, depth);dfs(root.left, depth);}

 这里将 dfs(root,0)一层层地拆解分析:

1.首先传入树的根节点root,和depth = 0

2.进入方法先判断root 是否为null, 为null 则return,这里也是后面递归的终止条件,当遍历到叶子结点下一节点时返回上一层。

3.进入到dfs(root.right,depth)递归环节,root.right = 1,depth = 0

(1)先判断root.right 是否为null,这里不为null,root.right = 3 ,depth = 1

(2)继续向下递归,先判断root.right.right 是否为null,这里不为null,root.right.right = 6 ,depth = 2

(3)继续向下递归,先判断root.right.right.right是否为null,这里为null,则return到上一层,跳到root.right.right = 6 ,depth = 2这一层

(4)在root.right.right = 6 ,depth = 2这一层,dfs(root.right.right.right,depth)已结束,执行下一句dfs(root.right.right.left,depth),进入方法后判断是否为null,不为null,root.right.right.left = 8,depth = 3

(5)在root.right.right.left = 8,depth = 3这一层,分别递归右子树和左子树,都为null,则返回root.right.right.left = 8,depth = 3这一层;同时root.right.right = 6 ,depth = 2这一层已经全部结束,返回到了root.right = 3 ,depth = 1这一层

(6)在root.right = 3 ,depth = 1这一层,右子树已经遍历完毕,开始遍历左子树dfs(root.right.right,depth),左子树为null,则root.right = 3 ,depth = 1这一层的左右子树也已经遍历完毕,所以回到了root.right = 1,depth = 0

4.此时dfs(root.right,depth)这句代码已经全部执行完毕,到了dfs(root.left,depth)这句话的执行,root.left = 2,depth = 1,然后像第3步一样开始从右子树--->左子树地递归

 

思路其实就像是套娃一样,一个大的盒子里装了两个小的套娃,这两个套娃里分别装着一层层的套娃,我们要先结束一个大的套娃,再结束另一个大的套娃。

 如果文字看的比较抽象,可以参考这个视频辅助理解:

递归算法很难?小s带你10分钟完成手把手推导,用递归求二叉树深度

http://www.mmbaike.com/news/56467.html

相关文章:

  • 空间站与空间站组合体交会对接网页优化
  • 湘西北京网站建设为什么中国禁止谷歌浏览器
  • 做网站需要留什么武汉久都seo
  • 网站的pdf预览是怎么做的项目推广方式有哪些
  • 网站推广信息怎么做虞城seo代理地址
  • 做代购网站的纳税企业网络营销目标
  • 自然村 网站建设网站运营管理
  • 政务网站建设云计算中心seo站群优化技术
  • 深圳网站设计有名 乐云践新上海网站建设开发
  • 台州网站公司吗万网建站
  • 中国建设银行个人登录网站电子商务软文写作
  • 宁波网站推广优化aso如何优化
  • 互联网营销常用网站发布推广信息的网站
  • 建筑设计公司合作加盟威海百度seo
  • 网站设计的公司北京全网整合营销公司
  • 销售订单管理系统软件seo外包优化
  • 广州网站模板建站搜索引擎优化大致包含哪些内容或环节
  • 产品设计公司推荐优化网络的软件下载
  • 怎么在自己的网站加关键词百度运营公司
  • 兰州网站外包代推广app下载
  • 新公司如何做网站百度入口网站
  • 怎么做购物平台网站网络推广人员
  • mvc net跳转到另一网站百度权重批量查询
  • 影视网站建设策划文案杭州网站优化
  • 上海网上做鸭子的网站大数据营销的案例
  • 祁连网站建设公司网站推广的方法有哪些
  • 制作微网站公司百度搜索引擎推广步骤
  • wordpress建站成本微信朋友圈广告如何投放
  • 西安企业建站系统模板传统营销
  • 阿里云wordpress菜鸟苏州seo关键词排名