獲取部門樹( 上 ) 直接取出一整棵樹
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...