为什么树的深度优先遍历可以写成递归模式,而宽度优先遍历不能?

今天在讨论python题目时,被某人今天问了一个问题:为什么树的深度优先遍历可以写成递归模式,而宽度优先遍历不能?。仔细讲解以后,还要我作个笔记,并给出以下提示:
1. 递归与函数的关系
2. 叙述系统如何为函数分配内存

3. 叙述系统为函数分配内存的数据结构的是什么

4. 叙述这个数据结构与一个函数是否能够写成递归的关系

5. 扩展:叙述一个通用的办法,这个办法可以把所有递归的算法写成非递归算法

笔记如下:
递归是在满足一定条件下,同一函数的逐级调用。
系统采用栈保存函数的首地址和参数。栈具有“先进后出”特点,刚好可以实现递归函数的调用关系。深度优先遍历是可以用栈表示的过程,而宽度优先遍历不可以,因此,可以采用递归实现,而宽度优先遍历不能。
由于系统为栈分配的大小是一定,比如2M,且栈是由高地址向低地址分配的,因此递归方法要预防出现“栈溢出”的异常。
通常,一个递归算法可以通过采用栈保存数据改写成一个非递归算法。

周末学python

最近想换工作,因为本就没打算在上海久待,且目前的工作让自己没有存在感了。现在每天一早坐在工位,再也没了刚入职时责任感,和奋斗的感觉。

但是,前两个星期的找工作经历很让我受挫;简历基本上都被拒绝了,唯一的面试机会也因为上班错过了。即使面试了,估计也没什么希望。正如,一开始计划找工作的担忧一样,我确实没准备好。没有互联网的测试经验,没有Java等语言的开发经验,而我却想做互联网行业的测试开发。更何况,我在开发方面也只是一只小菜鸟。

看来,这次换工作会是一个“漫长”的过程了。


周六,懒猪开始让我做leetCode OJ。我看完了廖雪峰的python教程,也只是纸上谈兵。从最简单的题目开始做起。到周日晚上十点,已经完成了10题目。打算在CSDN的博客上作个总结。

一开始,用新学习的语言写代码,是有些艰难。我没办法把自己的想法抽象成代码表达出来。大牛肯定没法理解菜鸟会被逼哭。那可能是因为即委屈又懊恼,即紧张又无语,到不知怎么办吧。

不管怎么说,这个周末还是要感谢懒猪。当然,以后要自己勤动手写代码,克服懒和害怕的心理。

坚持学习

这个星期,每天都是晚上12点以后睡觉,每天早上起床都觉得很困。有两天还是八点以后起床。今天终于睡了一个好觉,早上十点才起床。

一直,我觉得自己想学习的东西很多。但,似乎时间总是不够用。或者,没管住自己,没有规划好时间,没有那么强的毅力,困了累了就不想学习了。所以,学习的进展总是很慢。

由于惰性,和趋向舒适,要做到管理自己,确是需要不一般的自控力吧,就算对自己百利而无一害的事情,也很难坚持做。

所有人都羡慕天才,而所有人都知道学习没有捷径。天赋加勤奋造就了天才。我真的想知道自己的天赋是什么。唉,自己已经被中国教育摧残了十几年,所有的天赋也磨平了吧。

作为一个平凡到普通的人,为了在这俗世间活得有些尊严和自我,还是要坚持学习和努力工作。

为了以后的生活,我想学习绘画、摄影、英语;

为了以后的工作,我想学习Python等实用的编程技术和测试技术;

管住自己,坚持学习;

Welcome to the real world. It sucks, but you’re gonna to love it.