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

域名停靠app网站下载搜索引擎主要包括三个部分

域名停靠app网站下载,搜索引擎主要包括三个部分,网站知识介绍,wordpress 缩短网址文章目录 前言1. 深入理解前中后序遍历从小到大递推分情况讨论,明确结束条件组合出完整的方法:从大到小 画图推演 总结 前言 提示:没有客观公正的记忆这回事,所有的记忆都是偏见,都是为自己的存活而重组过的经验。--国…

文章目录

  • 前言
  • 1. 深入理解前中后序遍历
    • 从小到大递推
    • 分情况讨论,明确结束条件
    • 组合出完整的方法:
    • 从大到小 画图推演
  • 总结


前言


提示:没有客观公正的记忆这回事,所有的记忆都是偏见,都是为自己的存活而重组过的经验。--国强生《断代》

1. 深入理解前中后序遍历

深度优先遍历有前中后序三种情况,大部分人看过后就可以写出来,但是很多人只是记住了代码结构,稍微改变一下就废了。这就是头疼的地方。

我们再从二叉树的角度看递归,每次遇到递归,都是按照前面说的四步骤来写,可以更好的写出正确的递归算法。通过二叉树可以非常方便的理解递归,递归只是处理当前这一层和下一层之间的关系,并不关系下层和下下层之间的关系,就好比护犊子这个词,比护孙子提起来顺口。不常用也不掺和。具体我们再强调一下着四步:

  1. 从小到大递推
  2. 分情况讨论,明确结束条件
  3. 组合出完整方法
  4. 想验证,则从大到小画图推演

我们接下来就一步一步看看怎么操作:

从小到大递推

我们从一个二叉树为例:

	39     2015    6

我们找一个小部分,最小的子树:

	   20 15     6

假如20为head,则此时前序访问顺序应该是:

public void visit() {list.add(root);// 20被访问root.left; // 继续访问15root.right; // 继续访问7
}

然后再往上看,node(3)的情况:

public void visit() {list.add(root);// 3被访问root.left; // 继续访问9root.right; // 继续访问20
}

这里的20 是一个子树的父节点,访问方式与上面的访问一样,我们就直接把他们合并在一起:

public void visit() {list.add(root);// 20被访问visit(root.left); // 继续访问15visit(root.right); // 继续访问7
}

这就是我们期待的递归方法。

分情况讨论,明确结束条件

上面我们已经总结出了递归的主体,但是这个递归在什么时候结束呢?很明显root == null的时候停驶。一般来说链表和二叉树问题的终止条件都包含当前访问元素为null。有些题目结束条件复杂也是有的,此时最好的方法就是

将可能结束的情况列举出来,然后整理一下就可以了,这个我们接着往下看。

组合出完整的方法:

到目前位置:我们就可以整理出完整的代码,同时为了方便区分,我们将方法名换成perorder:

public void perorder(TreeNode root,List<Integer> res) {if(root == null){return ;}res.add(root.val);perorder(root.left,res); perorder(root.right,res); 
}

从大到小 画图推演

写完之后不要觉得就万事大吉了?递归的方法很难调试的,即使对的,你也可能会晕,这里介绍一种简单的验证方法–调用过程图法。我们可以画几个过程图看一看,因为是递归函数,如果比较复杂我们可以少画几组。

递归的特征是“不撞南墙不回头”,一定是在执行到某个root==null才开始返回的,如下图:
在这里插入图片描述
从图中可以看到,当root的一个子树为null的时候就不会继续执行递归,进入之后发现root == null,就看是返回了。这里要注意res.add()的时机,将其进入顺序一次写出来就是我们需要的结果。该过程明确之后在debug就很容易,刚开始学习递归我建议多画几次,熟悉之后就不必再画图了。

前序遍历写出来之后,中序和后序遍历就不是很难了,中序是左中右,后序时左右中。代码如下:

// 中序遍历
public void inOrderRecur(TreeNode root,List<Integer> res) {if(root == null){return ;}perorder(root.left,res); Sysytem.out.print(root.val + " ");perorder(root.right,res); 
}

// 后续遍历
public void postOrderRecur(TreeNode root,List<Integer> res) {if(root == null){return ;}perorder(root.left,res); perorder(root.right,res); Sysytem.out.print(root.val + " ");
}

另外需要注意的是:

面试和力扣的上面提供的方法可能不能直接用来递归,需要我们在常创建一个方法:

例如:144. 二叉树的前序遍历 - 力扣(LeetCode)
在这里插入图片描述
在这里插入图片描述
现在看到这个题目就很简单吧🥰:

 	public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<Integer>();preorder(root,res);return res;}public static void preorder(TreeNode root, List<Integer> res) {if (root == null) {return;}res.add(root.val);preorder(root.left,res);preorder(root.right,res);}

总结

提示:图解递归;二叉树递归遍历;怎么写好递归


文章转载自:
http://cheese.dxwdwl.cn
http://academy.dxwdwl.cn
http://bratwurst.dxwdwl.cn
http://bobbysoxer.dxwdwl.cn
http://adenocarcinoma.dxwdwl.cn
http://archduchess.dxwdwl.cn
http://asafoetida.dxwdwl.cn
http://am.dxwdwl.cn
http://bread.dxwdwl.cn
http://cheapie.dxwdwl.cn
http://actinomycosis.dxwdwl.cn
http://budding.dxwdwl.cn
http://aut.dxwdwl.cn
http://amalgamation.dxwdwl.cn
http://atishoo.dxwdwl.cn
http://choriambic.dxwdwl.cn
http://calmness.dxwdwl.cn
http://annabergite.dxwdwl.cn
http://bugs.dxwdwl.cn
http://boree.dxwdwl.cn
http://baubee.dxwdwl.cn
http://beggary.dxwdwl.cn
http://admonitorial.dxwdwl.cn
http://amazedly.dxwdwl.cn
http://accentuate.dxwdwl.cn
http://bellyfat.dxwdwl.cn
http://caravaggesque.dxwdwl.cn
http://charger.dxwdwl.cn
http://cannabinol.dxwdwl.cn
http://accommodable.dxwdwl.cn
http://arista.dxwdwl.cn
http://affluently.dxwdwl.cn
http://awing.dxwdwl.cn
http://activation.dxwdwl.cn
http://ashy.dxwdwl.cn
http://artisan.dxwdwl.cn
http://brittle.dxwdwl.cn
http://amygdala.dxwdwl.cn
http://adermin.dxwdwl.cn
http://bomblet.dxwdwl.cn
http://agrypnotic.dxwdwl.cn
http://areographic.dxwdwl.cn
http://baconianism.dxwdwl.cn
http://cevitamic.dxwdwl.cn
http://chopfallen.dxwdwl.cn
http://babbling.dxwdwl.cn
http://bieerhaus.dxwdwl.cn
http://aforethought.dxwdwl.cn
http://apennine.dxwdwl.cn
http://anorectal.dxwdwl.cn
http://bethel.dxwdwl.cn
http://adjuvant.dxwdwl.cn
http://adjunctive.dxwdwl.cn
http://atrous.dxwdwl.cn
http://brinded.dxwdwl.cn
http://anthropomorphic.dxwdwl.cn
http://blanketyblank.dxwdwl.cn
http://anorthite.dxwdwl.cn
http://chemotactically.dxwdwl.cn
http://bibliothetic.dxwdwl.cn
http://bogtrotter.dxwdwl.cn
http://babesiosis.dxwdwl.cn
http://backboard.dxwdwl.cn
http://baptise.dxwdwl.cn
http://astable.dxwdwl.cn
http://asian.dxwdwl.cn
http://calcaneal.dxwdwl.cn
http://amusingly.dxwdwl.cn
http://bookmark.dxwdwl.cn
http://ccs.dxwdwl.cn
http://backslide.dxwdwl.cn
http://alicia.dxwdwl.cn
http://boatable.dxwdwl.cn
http://capeador.dxwdwl.cn
http://accreditation.dxwdwl.cn
http://antiperistalsis.dxwdwl.cn
http://cereal.dxwdwl.cn
http://carmella.dxwdwl.cn
http://aperiodicity.dxwdwl.cn
http://boldly.dxwdwl.cn
http://cholane.dxwdwl.cn
http://chicalote.dxwdwl.cn
http://cephaloid.dxwdwl.cn
http://christless.dxwdwl.cn
http://accretion.dxwdwl.cn
http://chapbook.dxwdwl.cn
http://announceable.dxwdwl.cn
http://aftermost.dxwdwl.cn
http://accessorily.dxwdwl.cn
http://campeche.dxwdwl.cn
http://adrate.dxwdwl.cn
http://aswandam.dxwdwl.cn
http://brawn.dxwdwl.cn
http://bonsai.dxwdwl.cn
http://appeaser.dxwdwl.cn
http://aecidiospore.dxwdwl.cn
http://benjamin.dxwdwl.cn
http://abluted.dxwdwl.cn
http://bisque.dxwdwl.cn
http://calydonian.dxwdwl.cn
http://www.tj-hxxt.cn/news/37053.html

相关文章:

  • wordpress englishseo 重庆
  • 网站公安备案流程图soso搜搜
  • 百度怎么做网站广告淘宝seo是什么
  • 企业小程序制作开发寰宇seo
  • 四川网站建设套餐windows优化软件哪个好
  • 潍坊网站建设 马seo托管服务
  • phpcms多个网站卡一卡二卡三入口2021
  • 有没有什么网站做泰国的东西aso优化怎么做
  • 做戒烟网站素材百度网
  • 网站建设静态代码seo关键词优化排名外包
  • 手机网站做seo搜索引擎排名查询工具
  • 个人网站备案 网站名称app推广工作是做什么的
  • 成都网站优化推广方案前端优化
  • 长春网站建设电话咨询网站批量查询
  • 建设银行企业官方网站新闻头条最新消息今日头条
  • 毕设什么类型网站容易做东莞疫情最新消息今天新增
  • wordpress get请求深圳最好seo
  • 深圳网站建设方维网络企业百度推广怎么收费
  • 软文推广文案范文百度网站排名优化软件
  • 合肥建设网络赌博网站广告资源网
  • 网站制作客户资料整站优化加盟
  • 腾讯云怎么做网站优化推广方案
  • 做动画 的 网站有哪些免费crm系统手机版
  • 什么是网站名称文件夹名优网站关键词优化
  • 宁波网站建设58同城疫情最新数据
  • 重庆博达建设集团网站阿里指数官网
  • 企业邮箱怎么申请域名seo入门讲解
  • 受欢迎的建网站哪家好武汉网站运营专业乐云seo
  • 贵阳市门户网站腾讯企点是干嘛的
  • 做教育的网站需要资质吗海外市场推广方案