樹的直徑與重心學習筆記

2022-10-11 15:30:12 字數 539 閱讀 3456

此文為完成任務所設,可能不易懂,能看懂就將就著看吧

樹的定義:不存在環且聯通的圖。

樹的直徑:樹中的最長鏈

樹的重心:為乙個點,以此點為根,最大子樹的大小最小。

樹的直徑求法分兩種:兩次 dfs/bfs 與樹形 dp 。

首先講好理解點的樹形 dp 。

其實很簡單,每個節點維護子樹到這個點的最長鏈和次長鏈。

對於乙個子樹,能做出貢獻的顯然只有最長鏈。

將由子樹最長鏈得到的鏈與此節點的最長鏈與次長鏈作比較。

若比最長鏈大,則將原最長鏈賦給次長鏈,最長鏈更新。

若比次長鏈大,直接更新次長鏈。

每個節點的最長鏈與次長鏈相加即可。

然後是兩次 dfs/bfs 。

第一遍找到與任意節點最遠的節點,第二遍從找到的節點出發,找到最遠的節點。

兩次的節點即為樹的直徑。

樹的重心:

一次 dfs ,每次記錄下當前子樹的大小,最後乙個子樹大小就是總節點數-此子樹大小。

算出最大子樹大小後就嘗試更新答案。注意:可能有乙個,也可能有兩個。

樹的直徑與重心

樹的直徑,指樹上最長的不重複經過同乙個點的路徑。方法 先從任意一點p pp出發,找離它最遠的點q qq,再從點q qq出發,找離它最遠的點w ww,w ww到q qq的距離就是的直徑 具體實現可以使用兩次dfs dfsdf s。演算法證明 反證法 include using namespace st...

樹的重心 樹的直徑

樹的重心 樹的重心定義為 找到乙個點,其所有的子樹中最大的子樹節點數最少,那麼這個點就是這棵樹的重心,刪去重心後,生成的多棵樹盡可能平衡.實際上樹的重心在樹的點分治中有重要的作用,可以避免n 2的極端複雜度 從退化鏈的一端出發 保證nlogn的複雜度,利用樹型dp可以很好地求樹的重心.求樹的重心 模...

樹的直徑 樹的重心

樹的直徑 定義 那麼樹上最遠的兩個點,他們之間的距離,就被稱之為樹的直徑。樹的直徑的性質 1.直徑兩端點一定是兩個葉子節點。2.距離任意點最遠的點一定是直徑的乙個端點,這個基於貪心求直徑方法的正確性 可以得出。3.對於兩棵樹,如果第一棵樹直徑兩端點為 u,v 第二棵樹直徑兩端點為 x,y 用條邊將兩...