网络编程
位置:首页>> 网络编程>> Asp编程>> 整理一个asp多级树型分类问题的解决方法(2)

整理一个asp多级树型分类问题的解决方法(2)

 来源:csdn 发布时间:2007-10-17 18:38:00 

标签:树,分类,asp

下面是江一在线的回复。

这是一个多级的树(TREE)罢了,其实原理是类似于俺们这个论坛的结构,俺们是这样来实现的

主要数据结构
[  id  ]                                    长整型
[  num_replied  ]                  双精度型
[  num_followed  ]                双精度型
[  num_lasttime  ]                双精度型
 

当一个客户是最上层的:一级客户时,应该是
num_replied=num_followed

如果是二级的客户应该是:
num_replied=新的时间码
num_followed=上一级的num_replied
也就是说呢,二级或者并非一级分类的客户应该是num_replied<>num_followed的

而新增加一个客户或者一个下级客户时
更新num_lasttime的时间码,通过这个来保证整个客户树的完整
也就是说,只要num_lasttime相同的,必定是同一个主分类的客户

这样来得出一个完整的客户树是很容易的
第一步,得到该分类的num_lasttime
第二步,根据两个时间码,整理出整个树形结构

但问题是:假如我们要得出某一个客户的所有上级或者所有下级怎么办?

根据上面的数据结构,一个客户是可以存在并列关系的同级客户的,只要他不是一级分类
也就是说,所有num_replied相同,并且num_lasttime相同的客户都是一个级别的;但他们可能并不属于同一个上级客户,所有,上面的结构不能直接来完成你的要求,进行如下改动:

改动后的数据结构
[  id  ]                                    长整型
[  mark  ]                                长整型
[  num_replied  ]                  双精度型
[  num_followed  ]                双精度型
[  num_lasttime  ]                双精度型
 

增加了一个MARK字段,用于表示这个客户的级数,一级客户用0表示,二级用1表示,依此类推……
那么,得出一个客户的所有下级可能这样来
1.num_lasttime相同,表示同一个一级客户
2.mark>该客户的mark
3.num_replied>该客户的num_replied 

到这里,得出一个客户的所有上级你也应该知道怎么做了吧

如果你觉得太麻烦,希望像你的数据结构那样,用一个字段来表示隶属关系
我上次已经说过了,那你得学习如何科学高效的进行编码,我们可以来32位的二进制串来表示一个客户代号

比如:
0111  0010  0001  0100  0111  0001  0101  0111
前四位用来表示一级的客户
如果是一级的客户,那他的后面应该都是0
也就是类似:0001  0000  0000  0000  0000  0000  0000  0000
如果是二级的客户,第二段应该有数字,比如:
0001  0000  0010  0000  0000  0000  0000  0000
如果是再下一级的,就还有:
0001  0000  0010  0000  0100  0000  0000  0000
似次类推,可惜这种算法要用到:位与计算,而这在VBS和ACCESS中都不支持,可惜。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com