C#递归建树方法
发布网友
发布时间:2022-04-09 21:32
我来回答
共3个回答
热心网友
时间:2022-04-09 23:01
不知道你是不是访问数据库,我最近也再写个项目,需要递归一个节点下面的所有子节点,我自己写了两个存储过程!注意是嵌套的,我的表结构为id,title,parent,如下:
CREATE proc getChildTNode
@selectid int --这里是传入一个你选择的节点id
as
declare @id int--声明了一个游标变量id
insert #temp select * from tree where parent=@selectid --先插入parent字段为选择id的所有子节点
declare MyCursor cursor local for select [id] from tree where parent=@selectid--声明游标
open MyCursor--打开游标
fetch next from MyCursor into @id--读取下一行
while(@@fetch_status = 0)--判断,至于为什么要判断=0,就不用追究了
begin
exec getChildTNode @id --递归调用
fetch next from MyCursor into @id --将下一个节点id放进id变量作为父节点遍历
end
close MyCursor--关闭游标
deallocate MyCursor--什邡游标
这里还没有完,还有以下调用上面这个存储过程
CREATE proc getChildTNodes
@select int--同上面的定义一个父节点变量
as
create table #temp(
[id] int,
title varchar(50),
parent int,
)--建立一个临时表
exec getChildTNode @select--执行上面定义的存储过程,并传入父节点参数
select * from #temp--递归完成后,选择所有子节点数据
我用的是sqlserver数据库,如果你不是数据库的话,再来探索下,我只是做了存储过程,我相信C#代码还是和这个类似吧!希望对你有帮助
热心网友
时间:2022-04-10 00:19
树的遍历要用递归方便,
建树时先用递归遍历到一节点后再新建节点。追问可以给我发个例子么??谢谢了
追答没例子,百度上搜一下,会有现成答案的
热心网友
时间:2022-04-10 01:54
递归就是 调用自身函数进行遍历. 很简单的 想想就写出来了