# -*- coding:utf-8 -*-
# class RandomListNode:
# def __init__(self, x):
# self.label = x
# self.next = None
# self.random = None
class Solution:
# 返回 RandomListNode
def Clone(self, pHead):
self.cloneNodes(pHead)
self.connectSiblingNodes(pHead)
return self.reconnectNodes(pHead)
def cloneNodes(self, pHead):
pNode = pHead
while pNode:
cloneNode = RandomListNode(pNode.label)
cloneNode.next = pNode.next
pNode.next = cloneNode
pNode = cloneNode.next
def connectSiblingNodes(self, pHead):
pNode = pHead
while pNode:
cloneNode = pNode.next
if pNode.random:
cloneNode.random = pNode.random.next
pNode = cloneNode.next
def reconnectNodes(self, pHead):
pNode = pHead
cloneHead = cloneNode = None
if pNode:
cloneHead = cloneNode = pNode.next
pNode.next = cloneNode.next
pNode = pNode.next
while pNode:
cloneNode.next = pNode.next
cloneNode = cloneNode.next
pNode.next = cloneNode.next
pNode = pNode.next
return cloneHead
复杂链表 Python实现 剑指offer
猜你喜欢
转载自blog.csdn.net/z2539329562/article/details/80739121
今日推荐
周排行