求教找到树形结构的某个节点的所有子节点的递归算法?
发布于 7 年前 作者 JarvisQJ 5049 次浏览 来自 问答

QQ图片20170725165609.png 如果树形结构数据库设计成如上所示,如何找到树形结构的某个节点的所有子节点?

通过查资料发现,这个问题需要用到递归算法,有没有人能教一下怎么写?

5 回复

加个字段 path: 把最短路径存上,用号隔开,root节点的pid为0 , id不建议所作自增, 否则以下方法有bug, 用uuid解决 所以所有节点的path都会以0开头 查询时 直接 path like '%,pid%' 注意,号

换个思路呢,不需要递归,一种查询效率比较高的方式 http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

@xiaobaicai 这个英文文档只给出了已知有限层级的解决方案,不能解决未知层级的情况

我之前也遇到类似的问题,我们的方案是在每一个子节点都存上父节点和根节点的id。查询的时候,直接返回整个树,然后在前端找出某个子树。

直接构造json对象,存入字段

回到顶部