【数据结构与算法】递归树

1.树、二叉树
2.二叉查找树
3.平衡二叉树、红黑树
4.递归树

一、什么是递归树

如果我们把这个一层一层的分解过程画成图,它其实就是一棵树。我们给这棵树起一个名字,叫作递归树。
在这里插入图片描述
时间复杂度分析的递归树法

  1. 分析每一步核心操作的时间复杂度
  2. 分析树高:最大树高和最小树高
  3. 计算每层复杂度,全加起来(放缩法调整)

二、实战

实战1:快速排序
快速排序在最好情况下,每次分区都能一分为二,这个时候用递推公式 T(n)=2T(2n​)+n,很容易就能推导出时间复杂度是 O(nlogn)。

  1. 分割算法是O(n)
    2,树高最大最小都是 logn,所以O(logn)
    实战2:斐波那契数列:
  2. 加和算法1
  3. 节点数为倍增。 通项为2^h
  4. h高度最高n,最低n/2.相当于求等比数列前n项和。时间复杂度就介于 O(2n) 和 O(2n/2​) 之间
    实战3:全排列

// 调用方式:
// int[]a = a={1, 2, 3, 4}; printPermutations(a, 4, 4);
// k表示要处理的子数组的数据个数
public void printPermutations(int[] data, int n, int k) {
   
  if (k == 1) {
   
    
  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值