一、前言
很多情况下二级分类已经不能满足需要了,而网上可用的多级分类的例子实在是不好找,故有此文。
?tid=1182243
大家可以先看这个,它介绍了一种超级好的算法,反正我是看不大懂呀。
二、我们要解决的问题:
1、 分类算法常常表现为树的表示和遍历问题。那么,请问:如果用数据库中的一个Table来表达树型分类,应该有几个字段?
2、 如何快速地从这个Table恢复出一棵树;
3、 如何判断某个分类是否是另一个分类的子类;
4、 如何查找某个分类的所有产品;
5、 如何生成分类所在的路径。
6、 如何新增分类;
三、递归实现的优点与缺点
该怎么实现多级分类呢?
估计首先想到的都是递归,实现简单,在指定节点(就是分类,下同)下添加、修改、删除节点都不是问题,
而且节点移动实现起来也不是很难,只是要注意移动目的父节点不能是当前节点的父节节点(等于没移动),也不能是当前节点的子节点(类似于window文件夹,一个文件夹是不能移动到自己的字文件夹里的)。
但是最愁人的是搜索指定节点下的东西,怎么办?也就是上面的问题3。记住,这是要包括所有子节点的,难道还去递归吗?
四、介绍下我的简单算法(是我所用的,不是我发明的)
以常见的商品系统为例。
4.1 表结构
[1]分类表,T_Sort,表结构如图一所示。其中sortPath保存的是节点路径,这是个重点。
[2]商品表,T_Product,表结构如图二所示。
图一
……
为支持原创,其余的内容请到 处浏览 :)