獲取部門樹( 上篇 ) 直接取出一整棵部門樹

2021-10-07 01:33:28 字數 1087 閱讀 1586

獲取部門樹( 上 ) 直接取出一整棵樹

1、直接取出一整棵樹

2、規定顯示的層數,只顯示2層或3層,通過逐級的節點訪問子節點

針對第一種需求:

第一步:如果想獲取整棵樹,先把根結點-1取出。

第二步:再用-1去獲取子級id 1和2

第三步:再用 1和2 去獲取 3、4、5、6

第四步:再用3、4、5、6 去獲取 。。。。

。。。面對這種型別的問題,第一步到第n步都可以用乙個方法解決的問題,

於是運用遞迴來解決問題:

在此,博主使用二維陣列去測試, 實際中樹的對映可能存在資料表中,替換成相應的sql即可

public static class gettree , , , , , , , , , , , , , };   //正常樹結構

public static void main(string args)

static listlonglist = new arraylist<>();

public static maptree(integer department_code)

}list> sub1 = new arraylist<>();

for (integer i : sub)

tree.put("child", sub1); //取出的集合 存入子節點

}return tree;}}

以白話來理解此方法: (為了避免棧溢位,我們新建乙個集合存放進入過此方法的節點,如果集合中存在此節點則跳過此節點)

1、以根結點進入此方法,根據該節點去獲取對應的子節點 。

2、以1獲取到的子節點,再去獲取對應的子子節點

3、…4、直到沒有節點為止。

讀到這裡應該就可以理解到,遞迴就是條件一直在變,但是方法不變。直到不符合條件就跳出遞迴。

以上的程式得到的結果如下:

部門名稱部門結構疊用 部門名稱簡寫

總公司 head office 分公司 branch office 營業部 business office 人事部 personnel department 人力資源部 human resources department 總務部 general affairs department 財務部 gen...

樹上直徑 樹上最遠點O n

題目大意 對於一棵n個結點的無根樹,求出每個結點的最遠點,要求時間複雜度為o n 對於乙個點,距離它最遠的點一定是直徑的端點。證明 我們求直徑的時候,兩次dfs。兩次bfs 或者dfs 方法 先從任意一點p出發,找離它最遠的點q,再從點q出發,找離它最遠的點w,w到q的距離就是是的直徑 若p已經在直...

Mysql 查詢部門下所有部門

話不多說,直接上sql select dept id,dept name from select t1.dept id,t1.dept name,if find in set parent id,pids 0,pids concat pids,dept id 0 as ischild from se...