首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

算法 关于从数据库中创建树

2013-12-04 
求一个算法 关于从数据库中创建树递归的方式 效率不好, 不知道各位还有没有更好的办法得支持无限子节点,装

求一个算法 关于从数据库中创建树
递归的方式 效率不好, 不知道各位还有没有更好的办法
得支持无限子节点,装载到Treeview时 能保持原有的排序(例如移动节点到附近节点,顺序改变 可以存储在数据库中 并装出同样顺序的树).希望得到帮助 TREE treeview 算法 数据库 递归
[解决办法]
CREATE PROCEDURE expand (@current char(20)) AS
   SET NOCOUNT ON
   DECLARE @lvl int, @line char(20)
   CREATE TABLE #stack (item char(20), lvl int)
   INSERT INTO #stack VALUES (@current, 1)
   SELECT @lvl = 1
   WHILE @lvl > 0
      BEGIN
         IF EXISTS (SELECT * FROM #stack WHERE lvl = @lvl)
            BEGIN
               SELECT @current = item
               FROM #stack
               WHERE lvl = @lvl
               SELECT @line = space(@lvl - 1) + @current
               PRINT @line
               DELETE FROM #stack
               WHERE lvl = @lvl
                  AND item = @current
               INSERT #stack
                  SELECT Child, @lvl + 1
                  FROM Hierarchy
                  WHERE Parent = @current
               IF @@ROWCOUNT > 0
                  SELECT @lvl = @lvl + 1
            END
         ELSE
            SELECT @lvl = @lvl - 1
   END -- WHILE

这个实现上述效果的储存过程。
[解决办法]
方法1、全部加载到程序内存,在内存里循环扫描、加载
方法2、如果表结构尚未确定,分区id,pid的模式,改用rootid,order,level的模式

热点排行