部門樹學習筆記 為了忘卻的紀念

2021-05-09 19:14:33 字數 710 閱讀 7576

一年前學習了部門樹,因為當時研究完沒有做筆記,現在已經忘得差不多了,只知道用到了遞迴演算法。現在回想起來,之所以忘記,是因為理解的不夠透徹。今天研究了一天,已經大徹大悟。

部門樹的資料表(deptinfo)一共有三個字段,分別為deptid,pid,deptname,這三個欄位的意思我不說大家也明白。

部門樹的思想:

第一步,查詢出所以部門資訊。

public datatable getalldeptinfo()

接下來寫遞迴方法,思想為dttree加入當前的行,並將非當行前指派到下一遞迴。

public void buildtree(datatable dttree, datatable dtparam, int intlevel, string parentid)

datatable currtable = new datatable();

currtable = dtparam.clone();//用來記錄當前行

datatable nexttable = new datatable();

nexttable = dtparam.clone();//用來記錄非當前行,也就是剩餘行,此方法很好,不需要重複遍歷。

for (int i = 0; i < dtparam.rows.count; i++)

else

}for (int j = 0; j < currtable.rows.count; j++)

學習筆記 樹的重心

樹的重心 對於一顆n個結點的無根樹,找到乙個點,使得把樹變成以該點為跟的有根樹時,最大子樹的結點數最小,就是說如果刪除這個點後,所形成的森林中,最大的樹的結點數最小。性質 1 樹中所有結點到某個點的距離和中,到重心的距離和是最小的,如果有兩個距離和,則他們的距離和一樣。2 把兩棵樹通過一條邊相連,新...

學習筆記 樹的重心

給定一顆樹,樹中包含n個結點 編號1 n 和n 1條無向邊。請你找到樹的重心,並輸出將重心刪除後,剩餘各個連通塊中點數的最大值。重心定義 重心是指樹中的乙個結點,如果將這個點刪除後,剩餘各個連通塊中點數的最大值最小,那麼這個節點被稱為樹的重心。輸入格式 第一行包含整數n,表示樹的結點數。接下來n 1...

學習筆記之樹的映象

前段時間去一家公司參加面試,碰到了乙個問題,講的是樹的映象問題,當時莫名其妙,後面想想應該是跟平面鏡成像原理似的,回來研究後得出如下結論。問題描述 輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。例如輸入 8 ...