——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經(jīng)驗,分享JAVA帶來的快樂!本網(wǎng)站部分轉載文章,如果有版權問題請與我聯(lián)系。
如果一個圖中所有點都是聯(lián)通的,求最小樹可以將圖遍歷完成,這里的最小是指邊最少,跟邊長沒有關系。
算法利用深度優(yōu)先遍歷,記載每個遍歷過的節(jié)點,將節(jié)點按照遍歷順序記錄下來就是所謂的最小樹。
關于深度優(yōu)先遍歷請參見深度優(yōu)先遍歷。
不過這里奇怪的是:
假如所有節(jié)點之間是雙向聯(lián)通的,只用生成一個數(shù)組,裝入所有的節(jié)點,例如{'a','b','c','d','d'}
然后每兩個點之間的線段就是最小樹的結果,即a --> b, b --> c, c --> d, d --> e
似乎不用圖這樣復雜的結構支撐。
不過這里還是給出了按照圖來產(chǎn)生最小樹的辦法。
Graph.mst:返回最小樹。
Graph.main:提供簡單測試。
代碼如下:
Powered by: BlogJava Copyright © rogerfan