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