首页
学习
活动
专区
圈层
工具
发布

不用递归生成无限层级的树

偶然间,在技术群里聊到生成无限层级树的老话题,故此记录下,n年前一次生成无限层级树的解决方案 业务场景 处理国家行政区域的树,省市区,最小颗粒到医院,后端回包平铺数据大小1M多,前端处理数据后再渲染...{ "id": 4001, "name": "杭州市第一人民医院", "parentId": 3001, }, // 其他略 ] 第一版:递归处理树...常规处理方式 // 略,网上一抓一把 第二版:非递归处理树 改进版处理方式 const buildTree = (itemArray, { id = 'id', parentId = 'parentId...item[id]]; // 返回顶层数据 return String(item[parentId]) === topLevelId; }); }; 时间复杂度:O(2n) 最终版:非递归处理树...topLevelId)) { topLevelResult.push(item) } } return topLevelResult; } 时间复杂度:O(n) x下篇分享不用递归无限层级树取交集

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL 递归逻辑:驾驭层级数据的终极利器

    本文将深入剖析 SQL 递归逻辑的内核,从语法结构到执行原理,再到性能优化与陷阱规避,带你全面掌握这一处理层级数据的核心技术。...在实际企业场景中,这类层级递归能力往往不仅存在于单一业务表中,还会贯穿组织架构、业务流程、主数据及跨系统数据治理全过程。...基于集成架构的数据中心能力,企业可统一接入 MySQL、Oracle、SQL Server、PostgreSQL、达梦、API 接口及数据湖等多源异构数据,并通过跨源数据模型、数据血缘追踪与混合查询机制...性能优化:让递归飞起来虽然递归 CTE 功能强大,但如果使用不当,它就是性能杀手。在处理百万级数据或深层级树时,以下几点优化策略至关重要:索引是生命线递归查询的本质是不断的 JOIN 操作。...跨数据库的兼容性差异虽然 SQL 标准定义了递归逻辑,但不同数据库厂商的实现略有差异:PostgreSQL / MySQL 8.0+ / SQLite:严格遵循标准,使用 WITH RECURSIVE。

    24021

    跨层级信任递归破坏的电力营销数据安全防护方法

    本文针对新型电力系统下电力营销数据的跨层级安全风险,提出基于信任递归破坏模型的分析框架,构建以信任链连续性重建为核心的防护体系。...该模型的核心是将传统静态分层信任分析拓展为跨层级、动态递归反馈过程,揭示信任失效不仅具有传递性,还具有递归放大性与链式崩塌性。...然而,该信任链并非孤立存在,而呈现递归依赖特征:上层信任状态直接影响下层数据可信性,形成跨层级耦合结构,使风险能够沿链条连续传递并叠加。...3.2 递归破坏机制信任失效具有跨层级递归传播特征,是营销数据安全风险持续扩大的核心原因。任一层级发生信任失效时,其破坏效应不会局部终止,而是沿数据流动方向递归传播。...4.4 信任递归修复在系统整体层面,通过端—网—平台之间的信任状态联动,实现跨层级一致性控制。

    22110

    周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1.18)

    递归应用场景    在实际工作中,我们当然不会使用递归讲故事或者只是为了计算高斯求和,大部分时间,递归算法会出现在迭代未知高度的层级结构中,即所谓的“无限极”分类问题: package main import...Golang 1} {5 国画 2} {6 芭蕾舞 3} {7 Iris课程 4} {8 工笔 5} {9 形体 6}]     可以看到,结构体cate中使用pid来记录父分类,但展示的时候是平级结构,并非层级结构...这里使用递归算法进行层级结构转换: type Tree struct { id int name string pid int son []Tree }     新增加一个Tree的结构体...随后建立递归层级结构函数: func CategoryTree(allCate []cate, pid int) []Tree { var arr []Tree for _, v := range...(递归层级结构) 有异曲同工之处,但很显然,使用结构体的Golang代码可读性更高。

    1.8K60

    MySQL 递归查询实践总结

    MySQL复杂查询使用实例 By:授客 表结构设计 SELECT id, `name`, parent_id FROM `tb_testcase_suite` ?...parent_id值为5,则父级记录id为5),暂且把该记录自身称之为子记录,父级及父父级的记录称之为祖先记录,子级及子子级记录称之为后辈记录 查询需求 1) 根据指定记录的id,查询该记录关联的所有祖先记录,并按层级返回祖先记录...name 2) 根据指定parent_id,查询其关联的的所有后辈记录id 查询实现 通过函数调用实现 1)根据指定记录的id,查询该记录关联的所有祖先记录,并按层级返回祖先记录name # 向下递归...2)根据指定parent_id,查询其关联的的所有后辈记录id # 向上递归 DROP FUNCTION IF EXISTS querySuitePath; DELIMITER ;; CREATE FUNCTION

    2.3K40

    mysql递归查询方法|mysql递归查询遇到的坑,教你们解决办法

    1.前言 大家在用mysql递归查询的时候,肯定或多或少的会碰到一些问题,像小编就遇到了天大的坑(如下图),于是自己踩了坑,我得想办法把它铺一铺吖,避免大家也同时遇到这样的问题。...相信很多人都用不惯mysql,小编也是,oracle的递归查询很简单。...就一句sql就可以搞定,还有不清楚或者突然忘记需要温习的小伙伴们,大家可以看小编发的以前的关于oracle递归查询的方法,戳这里:【oracle递归查询方法介绍】 ---- 2.踩坑介绍 mysql递归查询...79854491等等,我就不一一列举啦,但是他们可能也是转载其他人的,其中遇到问题,他们并没有提前向大家说明或者他们自己也没有试过,小编就拿其中的一个方法试了一下,就遇到了如开头所说的一堆问题,所以大家在使用mysql...4.总结 上面这些,就是小编在用mysql递归查询遇到的坑,如果你还没有遇到,恭喜你,看完这篇文章可以避免踩坑了,但是记得点个赞吖。哈哈哈哈哈。

    2K20

    使用Python3.7+Django2.0.4配合vue.js2.0的组件递归来实现无限级分类(递归层级结构)

    可以想象神奇动物在哪里2里面莱斯特兰奇的家族族谱),就好象linux系统你可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建一些文件夹一样,随后使用tree命令就可以查看文件夹目录层级...那么这种层级结构也成为树结构在日常的开发需求里也是很常见的,比如美多商城系统的商品分类,课程的目录章节,以及以及论坛里的帖子回复等等,本次我们后台利用Django来写一个能够返回层级结构数据的接口,接口将该数据以...json的形式返回前端,前端使用vue的组件递归来展示数据。    ...catelist,many=True) mylist= xTree(catelist_ser.data) return Response(mylist)      请在mysql...所谓递归组件: 就是组件可以在它们自己的模板中调用自身,不过它们只能通过 name 选项来做这件事,例如给组件设置属性 name: 'Reply',然后在模板中就可以使用 Reply 调用自己进行递归调用了

    1K10

    MySQL层级查询实战:无函数实现部门父路径

    ## 本次需要击毙的MySQL函数函数主要用于**获取部门的完整层级路径**,方便在应用程序或SQL查询中直接调用,快速获得部门的上下级关系信息。...CONCAT(CONCAT(_tempCode, '#', _tempName), ',', _name); END WHILE; -- 返回拼接好的字符串,包含从顶级父部门到当前部门的所有层级信息...RETURN _name;END;```## 如何进行重构解决分析函数的作用是通过递归的方式,基于部门code和tenant_id,逐级向上查找父部门,拼接出完整的部门层级名称字符串。...### 方案一采用MySQL8+的CTE实现```javaWITH RECURSIVE dept_path AS ( SELECT code, name, pid, CAST(CONCAT(code...递归补全所有部门信息编码需要使用编码查询部门信息```java /** * 递归添加父部门code */ private void addParentDepartments(

    37600
    领券