CNode

求教找到树形结构的某个节点的所有子节点的递归算法?

问答
JJarvisQJ发布于9 年前最后回复9 年前5 回复5923 浏览0 收藏

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

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

查看回复

回复 (5)

Y
ystyle#1·9 年前

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

X
xiaobaicai#2·9 年前

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

J
JarvisQJ#3·9 年前
引用 xiaobaicai换个思路呢,不需要递归,一种查询效率比较高的方式 http://mikehillyer.com/articles/managing hierarchical data in mysql/

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

V
vylan#4·9 年前

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

S
shuaishenk#5·9 年前

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

参与回复
登录后即可参与回复。登录