实现无限级分类的方法中,有一种是利用递归的方式,网上能找到的无限级分类的博客,几乎都是使用递归实现,因为它思想和实现都很简单。
递归实现无限级分类的实质: 数据结构中递归实现遍历树 的过程,所以应该将重点集中在树的遍历上面。
其实递归实现无限级分为双亲表示法和孩子表示法(乱造的词),双亲表示法是用的最多的。
双亲表示法:每个节点都会保存父节点的标识,通过这个标识可以找到他的父节点,但是没有保存他的孩子的标识,即,如果不遍历家族树的话,一个节点是不知道他的子节点的标识,甚至都不知道是否有子节点。
下面是一棵树:
用表格的形式来表示就是下面这样:
mysql> select * from category; +----+-----------+------------+-----------+ | id | cate_name | cate_order | parent_id | +----+-----------+------------+-----------+ | 1 | AAAA | 3 | 0 | | 2 | BBBB | 2 | 1 | | 3 | CCCC | 4 | 1 | | 4 | DDDD | 3 | 1 | | 5 | EEEE | 2 | 2 | | 6 | FFFF | 3 | 2 | | 7 | GGGG | 7 | 3 | | 8 | HHHH | 4 | 4 | | 9 | IIII | 3 | 4 | | 10 | JJJJ | 2 | 4 | +----+-----------+------------+-----------+
使用递归来遍历一个由双亲表示法描述的树的过程大致如下:
1、找到root,即根节点
2、遍历一遍
扫描二维码关注公众号,回复:
82013 查看本文章
找到孩子后,再找孩子的孩子,直到不能再向下搜索时,再返回到上一级,不断重复这个过程,直到所有孩子都被遍历一次。