【leetcode】Clone Graph(python),leetcodepython

來源:互聯網
上載者:User

【leetcode】Clone Graph(python),leetcodepython

類似於二叉樹的三種遍曆,我們可以基於遍曆的模板做很多額外的事情,圖的兩種遍曆,深度和廣度模板同樣也可以做很多額外的事情,這裡舉例利用深度優先遍曆的模板來進行複製,深度優先中,我們先訪問第一個結點,接著訪問第一個鄰接點,再訪問鄰節點的鄰節點。。。。

class Solution:    # @param node, a undirected graph node    # @return a undirected graph node    def cloneGraph(self, node):        if None == node: return None        nodeMap = {}        return self.cloneNode(node, nodeMap)            def cloneNode(self, node, nodeMap):        if None == node:            return None        #訪問當前點,這裡不是簡單的print,而是複製,若已經複製,則返回副本        if nodeMap.has_key(node):            return nodeMap[node]        #若沒有副本,則複製一份,同樣處理其鄰接點        else:            clone = UndirectedGraphNode(node.label)            nodeMap[node] = clone            #訪問其鄰居節點            for neighbor in node.neighbors:                clone.neighbors.append(self.cloneNode(neighbor, nodeMap))        return clone

與這個題類似,

Copy List with Random Pointer  這個題目中如果允許使用額外的空間,我們也可以用這種辦法來獲得一份拷貝。

class Solution:    # @param head, a RandomListNode    # @return a RandomListNode    def copyRandomList(self, head):        if None == head: return None        nodeMap = {}        return self.copyListNode(head, nodeMap)            def copyListNode(self, node, nodeMap):        if None == node: return None        if nodeMap.has_key(node):            return nodeMap[node]        else:             cpNode = RandomListNode(node.label)            nodeMap[node] = cpNode            cpNode.next = self.copyListNode(node.next, nodeMap)            cpNode.random = self.copyListNode(node.random, nodeMap)        return cpNode 





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.