LeetCode 430
如果我们能把children全部flatten掉,那么其实就是要把chiildren faltten掉之后的list插入到当前节点的后面。children的flatten我们可以使用递归来实现。
def flatten(self, head: 'Node') -> 'Node':
curr = head
while curr != None:
if curr.child != None:
#把child flatten成一个list
self.flatten(curr.child)
#记住原来的next
nextp = curr.next
#插入child list
curr.next = curr.child
curr.child.prev = curr
curr.child = None
#移动到child list的最后
while curr.next != None:
curr = curr.next
#把child list的next指向原来的next,完成插入
curr.next = nextp
if nextp != None:
nextp.prev = curr
curr = curr.next
return head