Flatten a Multilevel Doubly Linked List


class Solution(object):
    
    def removechild(self,head):
        cur = head
        while cur:
            deepest = cur
            if cur.child != None:
                temp = cur.next
                cur.next = cur.child
                cur.child.prev = cur
                cur.child = None
                last = self.removechild(cur.next)
                
                if temp:
                    last.next = temp
                    temp.prev = last
                else:
                    deepest = last
                cur = temp
            else:

                cur = cur.next

        return deepest
    
    def flatten(self, head):
        """
        :type head: Node
        :rtype: Node
        """
        if not head:
            return
        self.removechild(head)
        
        return head
Comments (0)