首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在T-SQL中实现广度优先的深度优先遍历

在T-SQL中实现广度优先的深度优先遍历
EN

Stack Overflow用户
提问于 2014-04-28 16:49:24
回答 4查看 2.5K关注 0票数 0

我有以下T-SQL函数:https://gist.github.com/cwattengard/11365802

这将以广度优先遍历的方式返回数据。有没有一种简单的方法可以让这个函数在深度优先的遍历中返回数据?我有一个treeview-component,它支持这个(遗留系统)。

我已经有一个类似的存储过程,它以深度优先遍历的方式返回树,但是它使用游标并且非常慢。(6-7秒,而这个函数只需不到一秒的时间处理相同的数据)。

EN

回答 4

Stack Overflow用户

发布于 2014-04-28 17:11:39

我想我刚刚灵光乍现。如果我添加CTE已经提供的Path变量,并按此进行排序,我就得到了我想要的。OrgID是一个唯一的ID,所以按它排序将使它按照用户的预期输出排序(按时间顺序),并且对树视图是深度优先的。

票数 1
EN

Stack Overflow用户

发布于 2016-03-22 16:43:59

代码语言:javascript
复制
 http://sqlanywhere.blogspot.in/2012/10/example-recursive-union-tree-traversal.html

下面的图表显示了树形结构表的主键:

代码语言:javascript
复制
                           1
                           |
       ---------------------------------------
       2            93            4          5       
       |             |            |          |
--------------  ------------  --------     ------  
6  7  8  9  10  11 12 13  14  15 16 17     18  19
   |                   |             |      |
 -----               -----         -----  -----
 27 26               25 24         23 22  21 20

以下是广度优先和深度优先查询应该返回的内容:

代码语言:javascript
复制
Breadth-First  Depth-First
1              1
2              2
93             6
4              7
5              27
6              26
7              8
8              9
9              10
10             93
11             11
12             12
13             13
14             25
15             24
16             14
17             4
18             15
19             16
27             17
26             23
25             22
24             5
23             18
22             21
21             20
20             19
票数 1
EN

Stack Overflow用户

发布于 2014-04-28 16:59:11

如果你用tekst对输出进行排序,这样做行吗?

首先在函数内部填充表变量@unsorted;最后返回Select * from @unsorted order by tekst

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23336520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档