Posted on

Description

Submission

/*
// Definition for a Node.
class Node {
public:
    int val;
    Node* prev;
    Node* next;
    Node* child;
};
*/

class Solution {
public:
    Node* flatten(Node* head) {
        if(head == nullptr) return nullptr;
        if(head->child != nullptr) {
            Node* next = head->next;
            head->next = head->child;
            head->child = nullptr;
            head->next->prev = head;
            Node* p = head->next;
            for(; p->next != nullptr; p = p->next);
            p->next = next;
            if(next != nullptr) next->prev = p;
        }
        head->next = flatten(head->next);
        if(head->next != nullptr) head->next->prev = head;
        
        return head;
    }
};

Leave a Reply

Your email address will not be published. Required fields are marked *