树形结构递归_多层次递归优化-引用取树

传统的多层级结构取数时,我们多数使用递归解决问题,但递归取数有经验的人都知道有几个坏处:一是如果层级过多会导致取数时间非常久,二是资源一直得不到释放,会占用大量内存。本文旨在给大家分享一下通过引用传递实现获取层级结构数据。

首先我们查看一下二者在不同层级时对应消耗时间

场景一:三层数据

场景:每层级最多节点:10,循环次数:100。细说就是这是一个三层的数据结构,第一层1个数,第二层的节点最少有1个最多有10个,依次类推,第二层每个节点又会创建1-10个子节点。然后循环100次构建这种三层结构的树,并分别用两种方式针对这产生的一百个树进行取数,二者取第一层级树(取树形结构的所有数据)的时间图如下:

bc0eba673f6c402c387062a97ce3e9e7.png

结果解读:上图中横坐标为次数,第一次,第二次...;纵坐标为每次消耗的时间,目前单位为毫秒数。从上图时间分析来看当树结构为三层时,两种方式时间相差不大,所以此时递归和引用两种方式可以随意切换。

场景二:四层数据

场景:每层级最多节点:10,循环次数:100。细说就是这是一个四层的数据结构,第一层1个数,第二层的节点最少有1个最多有10个,依次类推。。。。。。然后循环100次构建这种四层结构的树,并分别用两种方式针对这产生的一百个树进行取数,二者取第一层级树(取树形结构的所有数据)的时间图如下:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值