結論:離樹上任意點\(u\)最遠的點必定是這顆樹直徑的一個端點。spa
證實:class
若點\(u\)在樹的直徑上,設它與直徑兩個端點\(x,y\)的距離分別爲\(S1\)、\(S2\),若距離其最遠的點\(v\)不是這兩個端點,di
則\(dist(u,v) > S1 && dist(u,v) > S2\), 則必有\(S1 + dist(u,v) > S1 + S2 或 S2 + dist(u,v) > S1 + S2\),這與\((x,y)\)是直徑的math
假設相悖。
else
\(u\)不在樹的直徑上,則其到直徑最近的一點\(mid\)的距離爲\(dist(u,mid)\),設直徑的兩端點分別爲\(x,y\)。
若距離\(u\)最遠的點不是\(x,y\)之一, 設距離\(u\)最遠的點爲\(v\),
則路徑\(u->v\)會出現以下幾種狀況:
1.徹底通過路徑\(u->mid\)
2.徹底不通過路徑\(u->mid\)
3.不徹底通過路徑\(u->mid\)
這3種狀況都能推出\((x,y)\)不是樹的直徑的結論。
故結論正確。