前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何高效的从数组数据生成树状层级数组?

如何高效的从数组数据生成树状层级数组?

作者头像
写PHP的老王
发布2019-08-12 15:28:28
2.6K0
发布2019-08-12 15:28:28
举报
文章被收录于专栏:写PHP的老王

任何无限极分类都会涉及到创建一个树状层级数组。从顶级分类递归查找子分类,最终构建一个树状数组。如果分类数据是一个数组配置文件,且子类父类id没有明确的大小关系。那么我们如何高效的从一个二维数组中构建我们所需要的树状结构呢。

假设数据源如下:

方案1 :

每次递归都要遍历所有的数据源。时间复杂度N^2

方案2 :
分析:

每次递归循环内部只遍历指定父分类下的数据。加上前期数据准备,整个时间复杂度Nx2

测试

生成测试数据

对两种方式使用相同的5000个数据,分别测试100次,两种方式100次执行总时间如下(单位s):

代码语言:javascript
复制
float(96.147500038147) 
float(0.82804679870605)

可以看出相差的不是一点点。方案2还是使用的是递归调用。递归调用虽然会让程序简介,阅读方便,但是数据多的时候容易出现超出最大调用栈的情况,同时内存也会持续上升。

还有什么其他的方案呢?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 写PHP的老王 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方案1 :
  • 方案2 :
    • 分析:
    • 测试
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档