求教找到树形结构的某个节点的所有子节点的递归算法?
如果树形结构数据库设计成如上所示,如何找到树形结构的某个节点的所有子节点?
通过查资料发现,这个问题需要用到递归算法,有没有人能教一下怎么写?
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对象,存入字段