求树的直径
歡迎來踩本人博客
樹的直徑:
就是樹上最長(zhǎng)路
方法 :
求兩邊DFS即可
步驟:
1.從任意一點(diǎn)進(jìn)行dfs,然后找到一個(gè)最長(zhǎng)路徑,記錄最遠(yuǎn)點(diǎn)u
2.然后從u再進(jìn)行dfs,找最長(zhǎng)路徑,記錄一點(diǎn)v。
(u,v)就是樹的直徑
證明:可以看這個(gè)視頻的第27:00(求樹直徑的原理和證明)
第四屆藍(lán)橋杯a組
證明:
我們可以看出圖中,樹的直徑是(4->2->5),長(zhǎng)度為9.
我們一開始選定一個(gè)點(diǎn)dfs
如果是直徑外一點(diǎn),比如w1,從w1進(jìn)行dfs找到的就是點(diǎn)4,路徑就1->2->4,這個(gè)路徑一定會(huì)與樹的直徑相交,而找到的4是直徑的一端,那從4再進(jìn)行dfs就是樹的直徑的另一端5,這樣兩遍dfs你就找到了樹的直徑
如果是直徑內(nèi)一點(diǎn),比如w2,從w2開始dfs找到的最遠(yuǎn)點(diǎn)4,這個(gè)路徑會(huì)被包含在樹的直徑里,那找到的點(diǎn)也就是樹直徑的一端,再dfs就可以找到另一端。
綜上用兩遍dfs就可以找到樹的直徑
總結(jié)
- 上一篇: 高创伺服驱动器CDHD2和sick伺服编
- 下一篇: 幸运数字Ⅱ