您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp >> 正文

使用“使用中值排序基数法”实现树状结构(一)

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-27 我要参与讨论

  ootid+id-sign(rootid)*id
desc,ordernum,然后结合deep就可实现树状的显示。


五、具体实现方法(以存储过程为例)

加贴存储过程:(省略注册用户检测以及积分部分内容)

CREATE PROCEDURE [add] @keyid int,@message varchar(50)
OUTPUT———keyid为回复的贴子id号,如果是新贴则为0,@message为出错信息
AS
IF (@keyid=0)
INSERT INTO forum (rootid,deep,ordernum,……) values(0,0,0,……)
ELSE
BEGIN
 DECLARE @rootid int,@id int,@deep int,@begnum float,@endnum
float,@ordernum float
 SELECT @rootid=0,@id=0,@deep=0,@begnum=0,@endnum=0,@ordernum=0
 SELECT @rootid=rootid,@id=id,@begnum=ordernum,@deep=deep from
forum where id=@keyid
 IF (@id=0)
 BEGIN
SELECT @message='要回复的贴子已经被删除!'
return
 END
 ELSE
 BEGIN
IF (@rootid=0) SELECT @rootid=@id——回复的是根贴,取其id为新加贴的rootid
SELECT @endnum=ordernum where rootid=@rootid and
ordernum>@begnum order by ordernum
IF (@endnum=0)
SELECT @ordernum=@begnum+65536 ——回复的是最后一贴
ELSE
SELECT @ordernum=(@begnum+@endnum)/2——关键,取排序基数中值
INSERT into forum (rootid,deep,ordernum,……)
values(@rootid,@deep+1,@ordernum,……)
 END
END
Select @message='成功'
return



剪枝存储过程:(省略注册用户检测以及积分部分内容)
CREATE PROCEDURE [del] @keyid int,@message varchar(50)
OUTPUT———keyid为要删除的贴子id号,如果是新贴则为0,@message为出错信息
AS
DECLARE @rootid int,@id int,@deep int,@begnum float,@endnum float
SELECT @rootid=0,@deep=0,@begnum=0,@endnum=0,@id=0
SELECT @id=id,@begnum=ordernum,@rootid=rootid,@deep=deep from forum
where id=@keyid
IF (@id=0)
BEGIN
 SELECT @message='该贴子不存在!"
 return
END
ELSE
BEGIN
 SELECT @endnum=ordernum from forum where rootid=@rootid and
deep<=@deep and ordernum>@begnum order by ordernum
 IF (@endnum=0)——要删除的是最后一个子枝
 DELETE FROM forum where ordernum>=@begnum and (rootid=@rootid or
id=@rootid)
 ELSE
 DELETE FROM forum where ordernum>=@begnum and ordernum<@endnum
and (rootid=@rootid or id=@rootid)
END

显示存储过程(略)

总结:由于省去了childnum字段,因此如果想要知道根贴(或子贴)有多少个子贴,则需使用统计方法或增加对应的字段记录,该问题可不列为树状结构讨论之列。


上一页  [1] [2] 

在google里搜索更多使用“使用中值排序基数法”实现树状结构(一)

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明