本文为原创作品,首发于微信公众号:【坂本先生】,如需转载请在文首明显位置标明“转载于微信公众号:【坂本先生】”,否则追究其法律责任。
微信文章地址:实战算法——多叉树全路径遍历
前言
本文研究的是如何对一个多叉树进行全路径的遍历,并输出全路径结果。该问题的研究可以用在:Trie树中查看所有字典值这个问题上。本文将对该问题进行详细的模拟及进行代码实现,讨论了递归和非递归两种方法优劣并分别进行实现,如果读者对这两种方法的优劣不感兴趣可直接跳到问题构建章节进行阅读。文章较长,推荐大家先收藏再进行阅读。
文章目录
递归和非递归比较
这个问题知乎上已经有了很多答案(www.zhihu.com/question/20…
递归
将一个问题分解为若干相对小一点的问题,遇到递归出口再原路返回,因此必须保存相关的中间值,这些中间值压入栈保存,问题规模较大时会占用大量内存。
非递归
执行效率高,运行时间只因循环次数增加而增加,没什么额外开销。空间上没有什么增加
递归的劣势和优势
递归的劣势
-
递归容易产生"栈溢出"错误(stack overflow)。因为需要同时保存成千上百个调用记录,所以递归非常耗费内存。
-
效率方面,递归可能存在冗余计算。使用递归的方式会有