遞迴樹處理

2021-04-02 14:48:46 字數 1528 閱讀 2834

原貼:

表中有兩個字段:

子  父

a   null

b   a

c   b

d   c

e   c

我的目的是:怎樣根據乙個父級條件,就把包括父級在內的所有子級查詢出來?

比如:父級條件是「b」,結果應該是:

子  父

b   a

c   b

d   c

e   c

父級條件是「c」,結果應該是:

子  父

c   b

d   c

e   c

注意:子級數沒有限制,可以任意有任意數目的子級。

--測試環境

create table test(子 varchar(10),父 varchar(10))

insert into test select 'a',null

union all select 'b','a'

union all select 'c','b'

union all select 'd','c'

union all select 'e','c'

--建函式

create function f_tree(@父 varchar(10))

returns @t table(子 varchar(10),父 varchar(10),level int)

begin

declare @i int

set @i=1

insert @t select *,@i from test where 子=@父

while @@rowcount<>0

begin

set @i=@i+1

insert @t select a.*,@i from test a,@t b

where b.子=a.父 and b.level=@i-1

endreturn

end--查詢

select 子,父 from dbo.f_tree('b')

select 子,父 from dbo.f_tree('c')

--結果

子          父         

---------- ----------

b          a

c          b

d          c

e          c

(4 row(s) affected)

子          父         

---------- ----------

c          b

d          c

e          c

(3 row(s) affected)

--刪除環境

drop table test

drop function f_tree

專題講解 樹專題 遞迴思路處理樹

我們都以二叉樹作為乙個標準的例子分析樹的問題常用的方法。首先我們先來分析遞迴的方法。有乙個很好的二叉樹的三步走戰略,我覺著很值得學習。三步走 方法的三步分別為 可以看出,核心有兩個,乙個是拆解子問題,乙個是是否使用全域性變數。全域性變數的使用很靈活的,因為python是可以返回多個變數,因此只是乙個...

用遞迴處理樹型結構 表結構

用遞迴處理樹型結構 表結構 遞迴求城市,從小到大的,或從大到小。等依次類推得目錄樹結構 我想寫乙個函式 傳入部門id號後 馬上得到相應的 部門結構 如 輸入8得到的是市場部 東南市場 上海市 輸入9得到的是市場部 西北市場 北京市 輸入6得到的是市場部 西北市場 輸入3得到的是市場部 輸入1得到的是...

遞迴高效處理

遞迴是一種 簡潔實現簡單的但效率不太高的處理重複計算的方法。效率不高是因為耗記憶體,耗記憶體是回溯時的重複計算,每次函式呼叫時引數的進棧出棧。所以,提高遞迴效率的方法就是減少重複計算。最簡單的就是儲存之前計算的結果。舉例說明,這是個常見的面試題 對於乙個遞迴函式w a,b,c 如果a 0 or b ...