Java 基本的遞迴寫法

2021-09-02 12:07:03 字數 1048 閱讀 1420

1.首先我們得有乙個樹狀結構的表,類似這種結構。必須得有 id,pid  其他的根據需要來。

我們叫它treetbl表吧。這裡pid為0的表示是頂級節點。

2.接著select * from treetbl ,並將得到的list 轉換成乙個map集合,

key 為 pid ,value 為 子元素物件集合或者子元素id集合之類的都可以,根據需要。

我這裡只需要id,所以是定義為了list型別。

map> map=new hashmap>();

for(object obj : list)

else

}

3.遞迴遍歷,說明在注釋中

//最終得到的子孫集合

listidlist=new arraylist();

/*這個pid的值根據需要來,

如果要獲取整棵樹,這裡就填根節點的id,treetbl表中的根節點的 id 為 0

如果是獲取指定父級節點下的所有子孫節點,就填該父節點的 id 值

*/listchidrenlist=map.get(pid);

/*上面得到的chidrenlist僅僅是底下一層的節點集合,也就是說只包含了子節點,未包含子節點下的所有子孫節點

如果變數pid表示第一層的話,這裡我們從第二層開始遞迴

也就是不停的尋找下一層下一層下一層……直到不存在下一層為止

如何判斷有無下一層呢,之前建立好的hashmap已存好父子關係,用它來判斷就好

*/for(string id : childrenlist)

//將之前第一層子節點也加入進來(這個地方根據需要來)

idlist.addall(chidrenlist);

private void getchildrens(map> map,string id,listidlist)}}

遞迴的寫法

foreach datarow dr0 in dt.rows tn1 new treenode tn1.nodes.add tn0 tn1 tn0 tn3 tn1 method tn1 treeview1.nodes.add tn1 private void method treenode tn1 ...

遞迴寫法總結

遞迴是演算法中的一種很重要思想。好的遞迴程式邏輯清楚,簡潔,有時候時間上也非常高效 此外鍊錶 二叉樹等結構用遞迴演算法一般都有鮮明優勢。往往遞迴問題口頭說起來感覺十分清晰順暢 而用 實現起來確總感覺層巒疊嶂,不知從何下手,思路也越來越混亂不堪。最近在解決一些演算法相關的小問題時候,經常需要用到遞迴,...

oracle 遞迴寫法

查詢所有 select from t address t 向下找包含自己 select from t address start with addr id connect by prior addr id addr pid 向下找不包含自己 select from t address start w...