递归树
作用:求解递归算法的时间复杂度。
递归树与时间复杂度分析
把递归的函数调用过程,逐层分解画成图,其实就是一棵树。
如下是根据斐波那契数列的递推公式画的图:



如何用递归树求解时间复杂度呢?
总时间=所有层数消耗时间的和;
如果每层消耗时间相同,那么O(n*h)。
如果每层消耗时间不同,那么O(h1+h2+...)

练习:
- 快速排序
快速排序的时间复杂度和它如何分区有关的,现在假设按照1:9分区,分区点是1/10n

每一层的操作就是:求分区点位置,分区。求分区点位置时间n,总的n。O(nh)。
那么现在求树高h也就是有多少层。

O(nlogn)
- 斐波那契数列
F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

最短路径n、n-2、n-4....1 =n/2 最长路径n、n-1、n-2....1 =n
每层时间:每组加和时间的总和,加和时间1,组数=2^(h-1)。每层总时间是2^(h-1)。
如果路径长度n:

