传统的多层级结构取数时,我们多数使用递归解决问题,但递归取数有经验的人都知道有几个坏处:一是如果层级过多会导致取数时间非常久,二是资源一直得不到释放,会占用大量内存。本文旨在给大家分享一下通过引用传递实现获取层级结构数据。
首先我们查看一下二者在不同层级时对应消耗时间
场景一:三层数据
场景:每层级最多节点:10,循环次数:100。细说就是这是一个三层的数据结构,第一层1个数,第二层的节点最少有1个最多有10个,依次类推,第二层每个节点又会创建1-10个子节点。然后循环100次构建这种三层结构的树,并分别用两种方式针对这产生的一百个树进行取数,二者取第一层级树(取树形结构的所有数据)的时间图如下:
![bc0eba673f6c402c387062a97ce3e9e7.png](https://img-blog.csdnimg.cn/img_convert/bc0eba673f6c402c387062a97ce3e9e7.png)
结果解读:上图中横坐标为次数,第一次,第二次...;纵坐标为每次消耗的时间,目前单位为毫秒数。从上图时间分析来看当树结构为三层时,两种方式时间相差不大,所以此时递归和引用两种方式可以随意切换。
场景二:四层数据
场景:每层级最多节点:10,循环次数:100。细说就是这是一个四层的数据结构,第一层1个数,第二层的节点最少有1个最多有10个,依次类推。。。。。。然后循环100次构建这种四层结构的树,并分别用两种方式针对这产生的一百个树进行取数,二者取第一层级树(取树形结构的所有数据)的时间图如下: