樹的直徑與樹的中心

2021-06-17 18:16:14 字數 413 閱讀 6828

1. 樹的直徑

概念:樹中的最長路。

求法:兩次深搜或dp。

1-兩次深搜:任找一點a為源點,深搜遍歷得到最遠點b,這個最遠點b必定在直徑中(感性想想,以a點為源點找到的最長路後面一段必定屬於樹的直徑的一部分);再以這個最遠點b為源點深搜遍歷求乙個最長路,這個最長路即為樹的直徑。

2-dp:顯然最長路的兩個端點必然是葉子或者根節點。設f(i)表示到i最遠的葉子,g(i)表示到i次遠的葉子,則有

f(i)=max+1;

g(i)=second+1;

其中j必須是i的兒子,計算順序是自底向上。最終答案為

max+1

2. 樹的中心

概念:樹的直徑的中點。

求法:有多種,如dp,廣搜,深搜等。

簡單的方法是,先求樹的直徑,再找到直徑中點即可。

如何求樹的直徑和中心

樹的直徑就是從找到一條最長路徑 不經過重複節點 時間複雜度o n 需要把整棵樹遍歷一遍 思路 動態規劃思想 求出經過各個點的最長路徑 取max 就是樹的最長路徑 include include include using namespace std const int n 2e4 int h n e...

樹的直徑與重心

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

wenbao與樹的直徑

1.樹上面求最長路簡單路 無環 就是樹的直徑問題.2.樹的直徑問題經典 兩遍bfs即可.問題分析 1 一開始任取乙個點u進行搜尋查詢出距離點u最遠距離的點v和長度.2 第二次bfs則從第一次中的點v找出距離點v最遠距離的點的路徑長度.3.問題正確性.證明 1 情況1 u在最長路上,那麼v一定是最長路...