1. 程式人生 > >九章演算法面試題61 克隆圖

九章演算法面試題61 克隆圖

九章演算法官網-原文網址


題目

給出一個圖,並且給出圖的起始節點,知道這個圖的節點的定義,要求克隆這個圖,返回克隆圖的起始節點。


線上測試本題


解答


這一類克隆一個圖的題目,我們都可以分為兩步。

第一步: 克隆點。 只需要用廣度優先搜尋的方法從根節點出發去遍歷一遍圖,並且同時克隆出每個點A相應的克隆點A`儲存在map裡面,所以map裡面儲存每個點的對應克隆點。

第二步: 克隆邊。再用廣度優先搜尋的方法遍歷一遍圖,並且這個時候由於知道一個點A的相鄰點點B,而map裡面儲存了A的克隆點A`,B的克隆點B`, 所以這個時候也知道A`和B`是相鄰點,建立克隆邊。

這樣通過這兩個步驟就可以對一個圖進行完整的克隆。