剑指offer
冰气泡柠檬水
这个作者很懒,什么都没留下…
展开
-
二叉树的非递归遍历
一.递归和非递归 递归函数所申请的系统栈,是一个所有递归函数都通用的栈。对于二叉树的深度遍历算法而言,系统除了记录访问过的节点信息外,还有其他信息需要记录,以实现函数的递归调用。 非递归实现时,用户自己定义的栈仅仅保存了遍历所需要的节点信息,因此更为高效。 (递归函数不一定比非递归函数执行效率低,如尾递归) 当编译器检测到一个函数调用是尾递归的时候,它就覆盖当前的活动记录而不是在栈中去创建一个新的。编译器可以做到这点,因为递归调用是当前活跃期内最后一条待执行的语句,于是当这个调用返回时栈帧中并没有其他事情原创 2022-02-07 21:00:47 · 308 阅读 · 0 评论 -
关于递归问题的优化
斐波那契数列问题 1.递归 int Fibonacci(int n) { if(n==1|n==2) return 1; return Fibonacci(n-1)+Fibonacci(n-2); } 时间复杂度:O(2^n) 空间复杂度:递归栈的空间 2.记忆化搜索 解决重复计算问题,用数组把计算过的保存下来 int f[50]{} ...原创 2022-01-15 11:01:02 · 86 阅读 · 0 评论