记住一定要画图
class ComplexListNode():
def __init__(self,value=None,_next=None,m_psibling=None):
self.value=value
self.next=_next
self.psibling=m_psibling
#第一步先复制节点
def cloneNodes(pHead):
pNode=pHead
while pNode is not None:
pClone=ComplexListNode()
pClone.value=pNode.value
pClone.next=pNode.next
pClone.psibling=None
pNode.next=pClone
pNode=pClone.next
#设置复制出来的psibling
def connectsibling(pHead):
pNode=pHead
while pNode.psibling is not None:
pNode.next.psibling=pNode.psibling.next
pNode=pNode.next.next
#把长链表拆分为两个链表
def ReconnectNode(pHead):
pNode=pHead
if pNode is not None:
pCloneHead=pCloneNode=pNode.next
pNode.next=pCloneNode.next
pNode=pCloneNode.next
if pNode is not None:
pCloneNode.next=pNode.next
pCloneNode=pCloneNode.next
pNode.next=pCloneNode.next
pNode=pNode.next
return pCloneHead
def Clone(pHead):
cloneNodes(pHead)
connectsibling(pHead)
return ReconnectNode(pHead)